你考虑过使用吗
IDENT_SEED
在动态查询中?
这将返回表标识列的种子值,如果不存在,则返回空值。
例子:
USE master
GO
CREATE DATABASE Test
GO
USE Test
GO
CREATE TABLE Test1 (ColA INT IDENTITY(100,1))
CREATE TABLE Test2 (ColA INT)
GO
USE master
GO
DECLARE @TargetDBName NVARCHAR(MAX), @sql1 NVARCHAR(MAX)
SET @TargetDBName = 'Test'
SET @sql1 = N'SELECT'
+ N' t.TABLE_NAME as TableName'
+ N',t.TABLE_SCHEMA as SchemaName'
+ N',(SELECT CASE WHEN IDENT_SEED('''
+ QUOTENAME(@TargetDBName) + '.''
+ t.TABLE_SCHEMA + ''.''
+ t.TABLE_NAME) IS NOT NULL THEN 1 ELSE 0 END) as HasIdentity '
+ N'FROM ' + QUOTENAME(@TargetDBName)
+ N'.INFORMATION_SCHEMA.TABLES t'
EXEC(@sql1)
GO
DROP DATABASE Test
GO
结果:
TableName SchemaName HasIdentity
---------- ----------- -----------
Test1 dbo 1
Test2 dbo 0
您可能需要考虑的一个警告:
出错或调用方返回空值
没有权限查看
对象。