我有一个要求,我需要从数据库DB1
中选择数据并插入数据库DB2
。
update [Server1\SQLEXPRESS].[DB1].dbo.table1
set CName = (select CName
from [Server2\SQLEXPRESS].[DB2].dbo.table1
where CID = 3)
所以上面的脚本工作正常。
现在我要通过
[Server1\SQLEXPRESS].[DB1]
[Server2\SQLEXPRESS].[DB2]
作为参数,因为服务器名称和数据库可以在实时环境中不同。
你能告诉我如何实现以下目标吗?
create procedure
@CID numeric,
@ServerName1 serverDataType,
@ServerName2 serverDataType,
@DBName1 dbDataType,
@DbName2 dbDataType
as
update @ServerName1.@DBName1.dbo.table1
set CName = (select CName
from @ServerName2.@DBName2.dbo.table1
where CID = @CID)
答案 0 :(得分:0)
以这种方式试试这件事:
DECLARE @ServerName1 varchar(max) = 'MyServer'
DECLARE @DB1 varchar(max) = 'MyDB'
EXEC('update ' + @ServerName1 + '.' + DB1 + '.dbo.table1
set CName= (select CName from ' + @ServerName1 + '.' + DB1 +
'.dbo.table1' where CID ='+ @CID)