我正在使用此 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');
Run Code Online (Sandbox Code Playgroud)
我希望能够将它封装到一个存储过程中,并为存储过程所在的任何数据库调用它,但数据库名称是硬编码的,如何动态获取数据库名称?
T-SQL 有没有类似的东西:
SET @db_id = DB_ID(this);
如果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');
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |