我正在使用此 T-SQL 获取索引统计信息(为简洁起见进行了编辑):
SET @db_id = DB_ID(N'TestDB');
SET @object_id = OBJECT_ID(N'TestDB.dbo.Users');
SELECT * FROM sys.dm_db_index_physical_stats(@db_id, @object_id, NULL, NULL , 'LIMITED');
我希望能够将它封装到一个存储过程中,并为存储过程所在的任何数据库调用它,但是数据库名称是硬编码的,如何动态获取数据库名称?
T-SQL 是否有类似的东西:
SET @db_id = DB_ID(这个);
如果
db_id()
调用时不带参数,则返回当前数据库的 ID - http://msdn.microsoft.com/en-us/library/ms186274.aspx所以你可以使用:
set @db_id=db_id()
阅读完问题的其余部分后,您可以
object_id()
在没有数据库名称的情况下进行调用。如果该对象存在,您将获得 id,如果不存在NULL
。所以:SET @object_id = OBJECT_ID(N'dbo.Users');