如何将绝对数据库名称、服务器名称作为参数传递?
How to pass absolute database name,server name as parameter?
我有一个要求,我需要从数据库 DB1
中 select 数据并插入到数据库 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)
以这种方式尝试一下:
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)
我有一个要求,我需要从数据库 DB1
中 select 数据并插入到数据库 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)
以这种方式尝试一下:
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)