如何在Sql Server 2008存储过程中连接到具有不同版本的另一个Sql Server实例

时间:2011-11-22 09:54:37

标签: sql-server sql-server-2005 sql-server-2008

我将程序存储在Sql Server 2008

实例的数据库中

我有一个存储过程,我想在其中使用Sql Server 2005UserName连接到Password数据库并将一些数据插入表格。

我怎么做?

感谢

2 个答案:

答案 0 :(得分:3)

创建链接服务器。您不能在存储过程的上下文中执行此操作。但是,您可以在存储过程中设置登录凭据。在下面的示例中,它假定链接服务器名为OTHERSERVER。这将允许您传递新连接的用户名和密码并调用存储过程。

create procedure NewTestProc (
    @I int,
    @userName sysname,
    @password   sysname
)
as
begin
    declare @locallogin sysname
    set @locallogin = SUSER_NAME()

    EXEC master.dbo.sp_addlinkedsrvlogin 
        @rmtsrvname=N'OTHERSERVER', @useself=N'False',
        @locallogin=@locallogin,@rmtuser=@userName,
        @rmtpassword=@password
    EXEC OTHERSERVER.DestinationDatabase.dbo.StoredProcInOtherDatabase 
        @OtherParameter = @i
    EXEC master.dbo.sp_droplinkedsrvlogin
        @rmtsrvname=N'OTHERSERVER',@locallogin=@locallogin
end

要调用存储过程,您还必须为链接服务器启用RPC

EXEC master.dbo.sp_serveroption @server=N'OTHERSERVER', 
     @optname=N'rpc', @optvalue=N'true'

答案 1 :(得分:1)

创建链接服务器。在SSMS中,转到“服务器对象” - >“链接服务器”并为Sql2005实例创建新的链接服务器,以提供要使用的安全上下文。然后在SP中将Sql2005表称为:[链接服务器名称]。[数据库名称]。[模式名称]。[表名]