我可以用这个连接到链接服务器:
SELECT testNo,soruTuruId,soruNo,cevap,degerlendirenTcNo,degerlendirilenTcNo 来自OPENDATASOURCE('SQLOLEDB','数据源= 192.168.150.42;用户ID = readerUser;密码= 1')。akreditasyon.dbo.tblPerfCevap
但我必须将密码作为参数传递。我试着这样:
SET @connectionString ='数据源= 192.168.150.42;用户ID = readerUser;密码='+ @ pw
SELECT testNo,soruTuruId,soruNo,cevap,degerlendirenTcNo,degerlendirilenTcNo 来自OPENDATASOURCE('SQLOLEDB',@ connectString).akreditasyon.dbo.tblPerfCevap
和
SELECT testNo,soruTuruId,soruNo,cevap,degerlendirenTcNo,degerlendirilenTcNo 来自OPENDATASOURCE('SQLOLEDB','数据源= 192.168.150.42;用户ID = readerUser;密码='+ @ pw).akreditasyon.dbo.tblPerfCevap
但没有用:S
有没有人有想法?
答案 0 :(得分:0)
使用exec()函数运行查询。将查询换行为有效的字符串。
答案 1 :(得分:0)
这是我对Ojulari的回答的工作实现。我希望从我们的Prod,QA等环境中运行相同的存储过程。每个人都需要访问不同的BizTalk Server数据库。
declare @DataSource varchar(100)
set @DataSource =
case
when dbo.GetEnvironment() = 'PROD' then 'Data Source=ProdBizTalkServer;UID=test;PWD=test'
when dbo.GetEnvironment() = 'QA' then 'Data Source=QABizTaklServer;UID=test;PWD=test'
ELSE null
end
declare @myExec varchar(max)
set @myExec = 'select
nvcMessageType,
COUNT(*)
from OpenDataSource(''SQLNCLI10'',''' + @DataSource + ''').BizTalkMsgBoxDb.dbo.Spool
where nvcMessageType like ''%#FlightMessageReceivedEvent''
group BY nvcMessageType
order by nvcMessageType
'
print '@myExec=' + IsNull(@myExec,'null')
EXEC(@myExec)