为何SSMS中链接服务器视图缺失存储过程与函数?
链接服务器看不到存储过程/函数?看这几个解决方向
常见原因
- 权限不足:你用来访问链接服务器的账号,大概率没有查看存储过程、函数元数据的权限。哪怕能看到数据库和表,也可能缺了
VIEW DEFINITION权限,或者对存储过程所在的架构没访问权。 - OLEDB Provider 默认限制:Microsoft OLEDB Provider for SQL Server 在SSMS的对象管理器里,默认不会自动列出存储过程和函数,得调整配置才行。
- SSMS 筛选器误开:可能不小心开启了对象筛选,把存储过程和函数给隐藏了。
具体解决步骤
1. 补全权限
登录到链接的目标SQL Server,给当前账号添加对应权限:
-- 授予账号查看所有数据库对象定义的权限 GRANT VIEW DEFINITION TO [你的登录账号]; -- 或者仅针对特定数据库授权 USE [目标数据库名]; GRANT VIEW DEFINITION ON SCHEMA::[dbo] TO [你的登录账号];
执行完成后刷新链接服务器的对象列表。
2. 调整OLEDB Provider属性
- 在SSMS中,依次打开服务器对象→链接服务器→提供程序,选中
Microsoft OLE DB Provider for SQL Server。 - 右键点击属性,勾选允许进程内选项,确定后重启SSMS,再查看链接服务器内容。
3. 清除SSMS筛选器
- 如果能看到链接服务器数据库下的可编程性节点,右键它选择筛选器→清除筛选器。
- 要是看不到该节点,点开SSMS顶部菜单的视图→对象资源管理器详细信息,在右侧面板中直接查找存储过程/函数。
4. 用T-SQL直接查询
如果以上方法都没效果,直接通过SQL查询更直接:
-- 查询链接服务器上的存储过程 SELECT * FROM [你的链接服务器名].[目标数据库名].[sys].[procedures]; -- 查询链接服务器上的函数 SELECT * FROM [你的链接服务器名].[目标数据库名].[sys].[objects] WHERE type IN ('FN', 'IF', 'TF');
内容的提问来源于stack exchange,提问作者Talal Hallaj
相关产品推荐
相关产品推荐

