如何创建存在于一个数据库中的存储过程,但是针对另一个(任何)数据库运行下面的代码?从SQL Server中的sproc中的另一个数据库获取元数据?
SET @sql1 = N'INSERT INTO #Tables SELECT'
+ N' t.TABLE_NAME as TableName'
+ N',t.TABLE_SCHEMA as SchemaName'
+ N',(SELECT OBJECTPROPERTY(OBJECT_ID(t.TABLE_SCHEMA + ''.'' + t.TABLE_NAME),''TableHasIdentity'')) '
+ N'FROM ' + QUOTENAME(@TargetDBName)
+ N'.INFORMATION_SCHEMA.TABLES t'
IF @Verbose = 1
PRINT @sql1
EXEC(@sql1)
我得到TABLE_NAME和SCHEMA_NAME成功,但主要的问题是,OBJECTPROPERTY()运行存储过程的数据库的情况下,而不是在@TargetDBName的情况下。所以,OBJECTPROPERTY()将始终返回null,除非@TargetDBName是一样的数据库存储过程的是英寸
我目前使用SQL Server 2008的