加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

【转载】SQLServer中如何判断表或者数据库的存在

发布时间:2020-12-12 13:35:58 所属栏目:MsSql教程 来源:网络整理
导读:Sql Server中如何判断表或者数据库的存在 作者:blue1000 出处:IT专家网论坛 【转载于】文章 sql server中如何判断表或者数据库的存在,但在实际使用中,需判断Status状态位: 其中某些状态位可由用户使用 sp_dboption(read only、dbo use only、single use

Sql Server中如何判断表或者数据库的存在

作者:blue1000 出处:IT专家网论坛 【转载于】文章

  sql server中如何判断表或者数据库的存在,但在实际使用中,需判断Status状态位:

  其中某些状态位可由用户使用 sp_dboption(read only、dbo use only、single user 等)进行设置:

  1 = autoclose;使用 sp_dboption 设置。 数据库完全关闭,其资源在最后一个用户注销后释放。

  4 = select into/bulkcopy;使用 sp_dboption 设置。允许使用 Select INTO 语句和快速大容量复制。

  8 = trunc. log on chkpt;使用 sp_dboption 设置。如果数据库处于日志截断模式,则检查点将截断日志中非活动的部分。只能为 master 数据库设置此选项。16 = torn page detection,使用 sp_dboption 设置。可以检测残缺页。

  32 = loading。

  64 = pre recovery。

  128 = recovering。

  256 = not recovered。

  512 = offline;使用sp_dboption 设置。数据库将处于脱机状态。

  1024 = read only;使用 sp_dboption 设置。用户仅能读取数据库中的数据而无法对其进行修改。

  2048 = dbo use only;使用sp_dboption 设置。只有数据库所有者可以使用数据库。

  4096 = single user;使用 sp_dboption 设置。每次只能有一个用户访问数据库。

  32768 = emergency mode。

  4194304 = autoshrink。

  1073741824 = cleanly shutdown。

  可以同时打开多个位。

  譬如:判断一个数据库是否offline

  select * From master.dbo.sysdatabases where name='pubs' and status<>512

  SQL Server中判断表对象是否存在:

  select count(*) from sysobjects where id = object_id('数据库名.Owner.表名')

  if exists

  (select count(*) from sysobjects where id = object_id('数据库名.Owner.表名'))

  print '存在'

  else

  print '不存在'

  SQL Server中判断表中字段是否存在:

  if exists(select * from syscolumns where name='colname1' and id=object_id('数据库名.Owner.表名'))

  print '存在'

  else

  print '不存在'

  代表表tablename1中存在colname1字段

  例:

  select * from syscolumns where name='Test' and id=object_id('dbo.test')

  Access中判断表对象是否存在:

  其实,Access数据库也有系统表,存放有对象名

  Select Count(*) AS Qty FROM MSysObjects Where ((MSysObjects.Name) Like '表名');

  判断数据库和表是否存在

  if not exists(select 1 From master.dbo.sysdatabases where name=N'JZKStarCfg')

*******************************************************************

SQL Server中判断数据库是否存在:
  法(一):

    select * From master.dbo.sysdatabases where name='数据库名'

  法(二):
    if db_id('数据库名') is not null

      drop database 。。。
   ? ?go

    create 。。。

?SQL Server中判断表对象是否存在:
  select count(*) from sysobjects where id = object_id('数据库名.Owner.表名')

  if exists?

     (select count(*) from sysobjects where id = object_id('数据库名.Owner.表名'))

    print '存在'
  else
    print '不存在'

SQL Server中判断表中字段是否存在:
  if exists

      (select * from syscolumns where name='colname1' and id=object_id('数据库名.Owner.表名'))
    print '存在'
  else
    print '不存在'
 (代表表tablename1中存在colname1字段?)
例:
  select * from syscolumns where name='Test' and id=object_id('dbo.test')

?

SQL Server中判断存储过程或视图是否存在:

?  if object_id('视图或存储过程名')? is not null
?    drop proc/view 。。。
   go

   create proc/view? 。。。

  或

  if Exists(select * from sysobjects where name='视图或存储过程名'? AND??type? =? 'P/V')
?    drop proc/view ?。。。
  go??

  create?proc/view ?。。。?


//***************************************************

? /// <summary>
? ? ? ? ///
判断是否存在某表的某个字段
? ? ? ? /// </summary>
? ? ? ? /// <param name="tableName">表名称</param>
? ? ? ? /// <param name="columnName">列名称</param>
? ? ? ? /// <returns>是否存在</returns>
? ? ? ? public static bool ColumnExists(string tableName,string columnName)
? ? ? ? {
? ? ? ? ? ? string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";
? ? ? ? ? ? object res = GetSingle(sql);
? ? ? ? ? ? if (res == null)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? ? ? return Convert.ToInt32(res) > 0;
? ? ? ? }
? ? ??
? ? ? ? /// <summary>
? ? ? ? ///
表是否存在
? ? ? ? /// </summary>
? ? ? ? /// <param name="TableName"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static bool TabExists(string TableName)
? ? ? ? {
? ? ? ? ? ? string strsql = "select count(*) from sysobjects where id = object_id(N'[" + TableName + "]') and OBJECTPROPERTY(id,N'IsUserTable') = 1";
? ? ? ? ? ? //string strsql = "SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[" + TableName + "]') AND type in (N'U')";
? ? ? ? ? ? object obj = DBHelp.GetSingle(strsql);
? ? ? ? ? ? int cmdresult;
? ? ? ? ? ? if ((Object.Equals(obj,null)) || (Object.Equals(obj,System.DBNull.Value)))
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cmdresult = 0;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? cmdresult = int.Parse(obj.ToString());
? ? ? ? ? ? }
? ? ? ? ? ? if (cmdresult == 0)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? return true;
? ? ? ? ? ? }
? ? ? ? }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读