Как передать параметры для OPENDATASOURCE - PullRequest
1 голос
/ 31 мая 2010

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

SELECT testNo, soruTuruId, soruNo, cevap, degerlendirenTcNo, degerlendirilenTcNo FROM OPENDATASOURCE ('SQLOLEDB', 'Источник данных = 192.168.150.42; ID пользователя = readerUser; Пароль = 1'). Akreditasyon.dbo.tblPerfCevap

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

SET @connectionString = 'Источник данных = 192.168.150.42; ID пользователя = readerUser; Пароль =' + @ pw

ВЫБЕРИТЕ тест Нет, соруТуруид, соруНо, ЧЭВАП, ДЕРГЕРЛЕНДИРЕНТЦО, ДЭГЕРЛЕНДИРИЛЕНЦ.Но ИЗ OPENDATASOURCE ('SQLOLEDB', @connectionString) .akreditasyon.dbo.tblPerfCevap

и

SELECT testNo, soruTuruId, soruNo, cevap, degerlendirenTcNo, degerlendirilenTcNo FROM OPENDATASOURCE ('SQLOLEDB', 'Источник данных = 192.168.150.42; ID пользователя = readerUser; Пароль =' + @ pw) .akreditasyon.dbo.tblPerfCevap

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

У кого-нибудь есть идея?

Ответы [ 2 ]

0 голосов
/ 25 октября 2013

Вот моя рабочая реализация ответа Оюлари. Я хотел, чтобы один и тот же хранимый процесс запускался из нашей среды 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)
0 голосов
/ 26 февраля 2011

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

...