【发布时间】:2012-08-02 02:01:58
【问题描述】:
我正在更新链接服务器的网址。在进行更改之前,我想知道所有引用此链接服务器的视图。是否有任何编程方式 (TSQL) 来执行此任务?
感谢您的帮助。
我使用的是 SQL Server 2005、2008 和 2012。引用链接服务器的数据库服务器大多是 SQL Server 2005
【问题讨论】:
-
你会接受答案 3 吗?
标签: sql-server tsql
我正在更新链接服务器的网址。在进行更改之前,我想知道所有引用此链接服务器的视图。是否有任何编程方式 (TSQL) 来执行此任务?
感谢您的帮助。
我使用的是 SQL Server 2005、2008 和 2012。引用链接服务器的数据库服务器大多是 SQL Server 2005
【问题讨论】:
标签: sql-server tsql
虽然它可能会返回误报,并且不会捕获使用动态 SQL 构造四部分名称的任何情况,但这可能是最简单的方法:
SELECT name FROM sys.views
WHERE LOWER(OBJECT_DEFINITION([object_id])) LIKE LOWER('%LinkedServerName%');
【讨论】:
LinkedServerName改成你的链接服务器的实际名称了吗???
这将找到视图:
SELECT t2.name, OBJECT_DEFINITION(t1.[object_id]) view_definition
FROM sys.views t1 join sys.servers t2 on
OBJECT_DEFINITION(t1.[object_id]) like '%['+ t2.name + '].%' ESCAPE '['
如果表、视图、模式或数据库与链接服务器同名,则可能会失败。
如果某些视图没有通过第一次检查,您可以添加此行,这部分不会检查链接服务器名称周围的方括号。但请注意,这部分更有可能包括 额外不需要的视图
or OBJECT_DEFINITION(t1.[object_id]) like '% '+ t2.name + '.%'
编辑:将 sys.sysservers 更改为 sys.servers。谢谢亚伦伯特兰
【讨论】:
如果您需要按名称查找数据库对象(例如表、列、触发器) - 请查看名为 SQL Search 的 FREE Red-Gate 工具,它会搜索您的整个任何类型字符串的数据库。
对于任何 DBA 或数据库开发人员来说,它都是必备工具 - 我是否已经提到它绝对免费可用于任何用途??
【讨论】:
试试这个:
SELECT name, OBJECT_DEFINITION([object_id]) FROM sys.views
where OBJECT_DEFINITION([object_id]) like '%.%.dbo.%'
【讨论】: