--以下語句可以正常執行
select *
from openrowset('SQLOLEDB','server=aaants56.aaaex.asmpt.com;uid=appraisal;pwd=appraisal_w','select * from eappraisalos.dbo.appraisal_activeitem') as a
--但是將服務器,帳號,密碼做為參數,修改為如下格式:
declare @servername  varchar(50),@uid varchar(20),@pwd varchar(20);
set @servername='aaants56.aaaex.asmpt.com';
set @uid='appraisal';
set @pwd='appraisal_w';
select *
from openrowset('SQLOLEDB','server=@servername;uid=@uid;pwd=@pwd','select * from eappraisalos.dbo.appraisal_activeitem') as a
--執行時,會提示以下錯誤:
--Msg 53, Level 16, State 1, Line 0
--Named Pipes Provider: Could not open a connection to SQL Server [53]. 

解决方案 »

  1.   


    SELECT 'aa=123'DECLARE @aa VARCHAR(10)
    SET @aa='123';SELECT 'aa=@aa';
    看懂我这个,再看你这个.
      

  2.   

    declare @servername  varchar(50),@uid varchar(20),@pwd varchar(20);
    set @servername='aaants56.aaaex.asmpt.com';
    set @uid='appraisal';
    set @pwd='appraisal_w';
    exec('select *
    from openrowset(''SQLOLEDB'',''server='+@servername+';uid='+@uid+';pwd='+@pwd+''',''select * from eappraisalos.dbo.appraisal_activeitem'') as a')
      

  3.   

    TRY:
    declare @servername  varchar(50),@uid varchar(20),@pwd varchar(20);
    set @servername='aaants56.aaaex.asmpt.com';
    set @uid='appraisal';
    set @pwd='appraisal_w';
    exec('
    select *
    from openrowset(''SQLOLEDB'',''server='''+@servername+''';uid='''+@uid+''';pwd='''+@pwd+''',''select * from eappraisalos.dbo.appraisal_activeitem'') as a'
    )