IF OBJECT_ID('dbo.Fun_GetTableRows') IS NOT NULL
DROP FUNCTION dbo.Fun_GetTableRows
GO
-- =============================================
-- Author: yenange
-- Create date: 2018-01-23
-- Description: 获取表行数
-- =============================================
CREATE FUNCTION dbo.Fun_GetTableRows
(
@tableName NVARCHAR(200)
)
RETURNS INT
AS
BEGIN
DECLARE @r INT;
SELECT @r = SUM(p.rows)
FROM sys.partitions p
INNER JOIN sys.indexes i
ON p.object_id = i.object_id
AND p.index_id = i.index_id
WHERE OBJECT_SCHEMA_NAME(p.[object_id]) <> 'sys'
AND i.index_id IN (0, 1)
AND i.object_id = OBJECT_ID(@tableName)
RETURN @r;
END
GO
参考:
另外一个 sys.sysindexes 也可以, 而且更简洁,但是微软文档中认为过时了, 故不采用。