2010-05-31 4 views
1

Я могу подключиться к связанному серверу с этим:Как передать параметры OPENDATASOURCE

ВЫБРАТЬ testNo, soruTuruId, soruNo, cevap, degerlendirenTcNo, degerlendirilenTcNo ОТ OPENDATASOURCE ('SQLOLEDB', «Источник данных = 192.168.150.42 , User ID = readerUser; Password = 1 '). Akreditasyon.dbo.tblPerfCevap

Но я должен передать пароль в качестве параметра. и я стараюсь, как это:

SET @connectionString = 'Data Source = 192.168.150.42; ID пользователя = readerUser; Password =' ​​+ @ Pw

ВЫБРАТЬ testNo, soruTuruId, soruNo, cevap, degerlendirenTcNo, degerlendirilenTcNo ОТ OPENDATASOURCE ('SQLOLEDB', @connectionString) .akreditasyon.dbo.tblPerfCevap

и

ВЫБОР testNo, soruTuruId, soruNo, cevap, degerlendirenTcNo, degerlendirilenTcNo ОТ OPENDATASOURCE ('SQLOLEDB', «Источник данных = 192.168 .150.42; User ID = readerUser; Password = '+ @ PW) .akreditasyon.dbo.tblPerfCevap

но не работал: S

ли кто-нибудь есть идеи?

ответ

0

использовать функцию exec() для запуска запроса. Заверните запрос в допустимую строку.

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) 
Смежные вопросы