基于以下2个数据库:
Database_A on Server_1
Database_B on Server_2
我有created a linked server to Database_B on Server_1 instance by name 'LS_B'.
我有一个巨大的脚本文件,它基本上在Database_A上创建了必需的表,函数,视图和存储过程。
这些函数,视图和存储过程依次引用Database_B表。
问题是我现在必须在脚本文件中包含OPENQUERY(LS_B,<query refering to database_b table>)
。
例如
create procedure some_proc
as
begin
select * from openquery(LS_B, 'select * from [Database_B].[dbo].[Table_1]');
end
有更好的方法吗?
PLS。建议。
由于
更新
为什么会失败
select top (50) * from LS_B.[Database_B].[dbo].[Table_1]
而以下工作
select * from OpenQuery(LS_B, 'select top (50) * from Database_B.dbo.Table_1')
执行第一个查询时的错误消息是
无法处理对象“”Database_B“。”dbo“。”Table_1“”。链接服务器“LS_B”的OLE DB提供程序“SQLNCLI10”表示该对象没有列,或者当前用户没有该对象的权限
两台服务器都位于同一个域中。
答案 0 :(得分:2)
如果两台服务器都是SQL服务器,您可以使用以下语法:
select * from LS_B.[Database_B].[dbo].[Table_1]
这取决于您的exisitng语法是否可以更容易地进行查找和替换。
您还可以在服务器1上创建一组以sps中引用的表命名的视图,然后让这些视图引用链接服务器:
CREATE VIEW Table_1
AS
select * from LS_B.[Database_B].[dbo].[Table_1]