我正在使用引用链接服务器的视图和存储过程:
SELECT Id, Name
FROM [LinkedServer].Database.dbo.FooView
我想隐藏[LinkedServer].Database
或至少隐藏[LinkedServer]
我的视图和存储过程的一部分。这样我就可以拥有“与服务器无关”的代码,可以很容易地在生产服务器和开发服务器之间进行比较。
这可以在服务器级别(如链接服务器)或数据库级别(使用它的视图和存储过程所在的位置)完成。
我正在使用引用链接服务器的视图和存储过程:
SELECT Id, Name
FROM [LinkedServer].Database.dbo.FooView
我想隐藏[LinkedServer].Database
或至少隐藏[LinkedServer]
我的视图和存储过程的一部分。这样我就可以拥有“与服务器无关”的代码,可以很容易地在生产服务器和开发服务器之间进行比较。
这可以在服务器级别(如链接服务器)或数据库级别(使用它的视图和存储过程所在的位置)完成。
然后只需
dbo.FooView
在您的 SP 中使用,它们在生产和开发之间可以相同。请注意,这仅适用于 SQL 2005 及更高版本。
SQL 2000 的一个解决方案可能是使用仅
SELECT * FROM [LinkedServer].Database.dbo.FooView
在其中没有其他代码的视图。您可以有一个元表,其中包含这些视图名称和相应命名源的列表。然后,编写一个循环遍历表并根据需要(重新)创建视图的 SP。然后,如果您想更改视图指向的位置,您可以使用新的链接服务器名称作为参数运行您的 SP(或将其保存在元表中并更新它)并且您的所有依赖对象将静默指向新位置现在。只要列名、位置和数据类型相同,就可以正常工作。