推断数据对象的存在

                                        (理论)

【sys.databases】
它是SQL Server中的一个视图。它的位置參看图中所看到的。MicrosoftSQL Server实例中每一个数据库都相应当中的一行。

详细该视图中每一个字段的含义。參看MSDN:https://msdn.microsoft.com/zh-cn/library/ms178534.aspx


【sysobjects】
它也是SQL Server中的一个视图,它的位置在每一个用户创建的库里面的系统视图中。例如以下图所看到的。这个视图中每一个字段的含义请參考MSDN:https://msdn.microsoft.com/zh-cn/library/ms177596.aspx。它主要存储当前数据库的对象。如约束、默认值、日志、规则、存储过程等。

                                        (经验)

以下介绍几个经常使用的推断数据库中是否存在某个对象的SQL语句。

1、数据库
    if exists (select * from sys.databases where name = ’数据库名’)  
2、数据表
    if exists (select * from sysobjects where id = object_id(N’[表名]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)  
3、存储过程
    if exists (select * from sysobjects where id = object_id(N’[存储过程名]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1)  
4、视图
    IF EXISTS (SELECT * FROM sys.views WHERE object_id = ’[dbo].[视图名]’
5、函数
     if exists (select * from dbo.sysobjects where id = object_id(N’[dbo].[函数名]’) and xtype in (N’FN’, N’IF’, N’TF’))    


版权声明:本文博客原创文章,博客,未经同意,不得转载。

原文地址:https://www.cnblogs.com/lcchuguo/p/4720074.html