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