1

これでリンクサーバーに接続できます:

SELECT testNo、soruTuruId、soruNo、cevap、degerlendirenTcNo、degerrendirilenTcNo FROM OPENDATASOURCE('SQLOLEDB'、'Data Source = 192.168.150.42; User ID = readerUser; Password = 1')。akreditasyon.dbo.tblPerfCevap

ただし、パスワードをパラメーターとして渡す必要があります。そして私はこのようにしようとします:

SET @connectionString='データソース=192.168.150.42;ユーザーID=readerUser; Password ='+ @ pw

SELECT testNo、soruTuruId、soruNo、cevap、degerlendirenTcNo、degerrendirilenTcNo FROM OPENDATASOURCE('SQLOLEDB'、@connectionString).akreditasyon.dbo.tblPerfCevap

SELECT testNo、soruTuruId、soruNo、cevap、degerlendirenTcNo、degerrendirilenTcNo FROM OPENDATASOURCE('SQLOLEDB'、'Data Source = 192.168.150.42; User ID = readerUser; Password ='+ @ pw).akreditasyon.dbo.tblPerfCevap

しかし動作しませんでした:S

誰かアイデアがありますか?

4

2 に答える 2

0

exec()関数を使用してクエリを実行します。クエリを有効な文字列にラップします。

于 2011-02-26T02:46:06.327 に答える
0

これがオジュラリの答えの私の実用的な実装です。Prod、QAなどの環境から同じストアドプロシージャを実行したかったので、それぞれが異なるBizTalkServerのデータベースにアクセスする必要があります。

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)
于 2013-10-25T15:14:48.513 に答える