帮助t-sql链接服务器

时间:2010-08-04 21:24:19

标签: sql sql-server tsql sql-server-2008 linked-server

基于以下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”表示该对象没有列,或者当前用户没有该对象的权限

两台服务器都位于同一个域中。

1 个答案:

答案 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]