SQL Server 2019报错‘Invalid object name sys.sysrowsets’的解决方法咨询
解决SQL Server 2019中“Invalid object name sys.sysrowsets”错误
核心原因:
sys.sysrowsets是SQL Server的向后兼容系统视图,在2019版本中已被标记为过时,且默认仅对拥有VIEW SERVER STATE权限或属于sysadmin固定服务器角色的账号可见。普通权限账号直接查询会报对象不存在的错误。解决方法1:授予必要权限(若需继续使用旧视图)
如果你必须依赖sys.sysrowsets,先给当前登录账号授权(替换[你的登录账号]为实际账号):GRANT VIEW SERVER STATE TO [你的登录账号];授权后重新执行查询,即可正常访问该视图。
解决方法2:使用官方推荐的替代视图
微软早已不建议使用sys.sysrowsets,推荐用以下现代系统视图替代,功能更完善且无需特殊服务器级权限(仅需目标数据库的查询权限):- 查询表分区、行数等信息 → 用
sys.partitions:-- 示例:查看指定表的分区及行数 SELECT OBJECT_NAME(p.object_id) AS 表名, p.partition_id, p.rows AS 分区行数, p.data_compression_desc AS 压缩类型 FROM sys.partitions p WHERE p.object_id = OBJECT_ID('dbo.你的表名'); - 查询存储分配单元信息 → 用
sys.allocation_units:-- 示例:查看分配单元的存储使用情况 SELECT au.container_id, au.type_desc AS 分配单元类型, au.total_pages AS 总页数, au.used_pages AS 已使用页数 FROM sys.allocation_units au;
- 查询表分区、行数等信息 → 用
额外提醒:如果数据库是从旧版本升级到2019的,建议尽早迁移到新视图,避免后续SQL Server版本彻底移除过时视图导致代码失效。
内容的提问来源于stack exchange,提问作者Эльфия Валиева
相关产品推荐
相关产品推荐

