Вы можете получить приблизительное представление от
SELECT SUM(rows)
FROM sys.partitions p
WHERE index_id < 2 and p.object_id=@my_object_id
Если вам нужна гарантированная точность, вам нужно создать и выполнить динамическую строку 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)