Eam*_*nne 4 sql reflection introspection sql-server-2008
对于一些数据库健全性检查代码,我想确定一个特定的object_id是否对应于一个空表.
是否有某种方式(例如)select count(*) from magic_operator(my_object_id)或类似的?
我非常喜欢可以在MS SQL server 2008b上运行的纯SQL解决方案.
Mar*_*ith 11
你可以从中得到一个粗略的想法
SELECT SUM(rows)
FROM sys.partitions p
WHERE index_id < 2 and p.object_id=@my_object_id
Run Code Online (Sandbox Code Playgroud)
如果要保证准确性,则需要构造并执行包含两个部分对象名称的动态SQL字符串.下面的示例虽然取决于您如何使用它,但您可能更喜欢使用sp_executesql并将结果作为输出参数返回.
DECLARE @DynSQL nvarchar(max) =
N'SELECT CASE WHEN EXISTS(SELECT * FROM ' +
QUOTENAME(OBJECT_SCHEMA_NAME(@my_object_id)) + '.' +
QUOTENAME(OBJECT_NAME(@my_object_id)) +
') THEN 0 ELSE 1 END AS IsEmpty'
EXECUTE (@DynSQL)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |