我将程序存储在Sql Server 2008
。
我有一个存储过程,我想在其中使用Sql Server 2005
和UserName
连接到Password
数据库并将一些数据插入表格。
我怎么做?
感谢
答案 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表称为:[链接服务器名称]。[数据库名称]。[模式名称]。[表名]