MSSQL 判断数据库中(表 视图 存储过程 函数 列)是否存在的方法收集


下面脚本的功能主要展示数据库中,表、视图、存储过程、函数、列 对象是否存在于数据库中,
以下SQL语句,常应用于脚本更新中,对数据库架构信息进行获取和判断

1 获取指定”数据库”是否存于当前DB服务器中

if exists(select null from sys.databases where name=’数据库名称A’)
begin
print ‘当前DB服务器存在数据库:数据库名称A’
end


2 获取指定数据库中是否存在”指定表”
2.1 获取是否存在用户创建”表名称A”

if exists(select null from sysobjects where type=’u’ and name =’表名称A’)
begin
print ‘当前数据库中存在表:表名称A’
end

2.2 获取指定数据库中,是否存在”表名称A”

if exists (select null from sysobjects where id = object_id(N'[表名称A]’) and OBJECTPROPERTY(id, N’IsUserTable’) = 1)
begin
print ‘当前数据库中存在表:表名称A’
end

3 获取指定数据库中,是否存在指定存储过程

if exists (select null from sysobjects where id = object_id(N'[存储过程名称A]’) and OBJECTPROPERTY(id, N’IsProcedure’) = 1)
begin
print ‘当前数据库中存在存储过程:存储过程名称A’
end

4 获取当前连接中是否存在临时表

if object_id(‘tempdb..#临时表名称A’) is not null
begin
print ‘当前数据库中存在临时表:临时表名称A’
end

5 获取当前数据库中,是否存在指定的视图

if exists(select null from sysobjects where xtype=’V’ and name =’视图名称A’)
begin
print ‘当前数据库中存在视图:视图名称A’
end

6 获取当前数据库中,是否存在指定的函数

if exists (select null from dbo.sysobjects where name = ‘函数名称A’ and xtype in (N’FN’, N’IF’, N’TF’))
begin
print ‘当前数据库中存在函数:函数名称A’
end

7 获取当前数据库中,用户创建的所有对象

select * from sysobjects where xtype=’U’

8 获取当前数据库中,指定表中是否存在指定列

if exists(select null from syscolumns where id=object_id(‘表名称’) and name=’列名称’)
begin
print ‘存在指定列:列名称’
end

9 获取指定表中,指定列是否为自增列

if columnproperty(object_id(‘表名称A’),’列名称A’,’IsIdentity’)=1
begin
print ‘表名称A中列名称A为自增长列’;
end

10 获取表上是否存在指定 索引名称

if exists(select null from sysindexes where id=object_id(‘表名称A’) and name=’索引名称A’)
begin
print ‘表名称A 上 存在索引 索引名称A’;
end