执行下面的出错了:
exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','Data Source=192.168.0.38;User ID=build;Password=123'
exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'build','123'
select top 1 * from srv_lnk.book.dbo.tbl_book出错信息:
服务器: 消息 17,级别 16,状态 1,行 12
SQL Server 不存在或拒绝访问。如果上面的再加上
exec sp_serveroption N'srv_lnk', N'rpc out', N'true' 
exec sp_serveroption N'srv_lnk', N'rpc', N'true'  也同样出错,错误信息一样而执行下面这个,却能取出数据,是为什么?
SELECT top 1 * FROM  OPENDATASOURCE('SQLOLEDB','Data Source=192.168.0.38;User ID=build;Password=123').book.dbo.tbl_book

解决方案 »

  1.   

    哦!
    exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'build','123'
    是这一行出的错误么?
    执行存储过程sp_addlinkedsrvlogin   需要用户具有一定的权限
    只有 sysadmin 和 securityadmin 固定服务器角色的成员才可以执行 sp_addlinkedsrvlogin。
      

  2.   

    exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','Data Source=192.168.0.38;User ID=build;Password=123'--這邊改一下
    exec   sp_addlinkedserver     'srv_lnk','','SQLOLEDB','192.168.0.38'
    --改成上面的這一句呢?
    exec   sp_addlinkedsrvlogin   'srv_lnk','false',null,'build','123'
    select top 1 * from srv_lnk.book.dbo.tbl_book當你用sp_addlinkedserver時,由於指定了第三個參數為SQLOLEDB,因此第四個參數就是你要訪問的ServerName。如果在這台機器上有多個Instance,則為ServerName\InstanceName.