各位大侠: 本人问题是这样:程序之前运行正常,但昨天把sql server个人版换成企业版后,程序出现以下错误,
我在摆渡上找了下原因.按下面方法执行后,错误依然存在已经执行:
select * from sys.servers (查看系统表,看原来的服务器名)
sp_dropserver '原来的服务器名' (删除原来的服务器名)
sp_addserver '现在的服务器名' (添加现在的服务器名)
sp_serveroption '现在的服务器名','data access', 'true' (设定 SQL Server 选项,使其答应加入linked server)
错误:“/CRM”应用程序中的服务器错误。
--------------------------------------------------------------------------------在 sysservers 中未能找到服务器 '192.168.1.10'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 在 sysservers 中未能找到服务器 '192.168.1.10'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。源错误: 执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。  堆栈跟踪: 
[SqlException: 在 sysservers 中未能找到服务器 '192.168.1.10'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。]
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream) +723
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior) +45
   System.Data.SqlClient.SqlCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +5
   System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +38
   CJYSOFT.DAO.DALSqlEngine.Exec_DataSet(CommandType cmdType, String cmdText, DALParameter[] cmdParms, DataSet dataSet)[DALException: 在 sysservers 中未能找到服务器 '192.168.1.10'。请执行 sp_addlinkedserver 以将服务器添加到 sysservers。His_GuaHaoXinXi_CJYSOFT]
   CJYSOFT.Logic.LJiLei.ShowData(String strGuoChengMC, String strServerIP, String strTiaoJian)
   SheQuDangAn.Projects.JiuZhenXinXiHIS.frmJiuZhenXinXiMZ.BindHZLB()
   SheQuDangAn.Projects.JiuZhenXinXiHIS.frmJiuZhenXinXiMZ.btnChaXun_Click(Object sender, ImageClickEventArgs e)
   System.Web.UI.WebControls.ImageButton.OnClick(ImageClickEventArgs e) +109
   System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +69
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
   System.Web.UI.Page.ProcessRequestMain() +1277 

解决方案 »

  1.   

    未能找到服务器 '192.168.1.10',ping一下192.168.1.10,是否能ping通?
      

  2.   

    显然sp_addlinkedserver 未执行或者未执行成功提示很清楚
      

  3.   


    EXEC sp_addlinkedserver 
       'ALIASNAME', 
       '', 
       'SQLOLEDB',
       NULL,
       NULL,
       'DRIVER={SQL Server};SERVER=SERVERNAME;database=DATABASENAME;UID=sa;PWD=password;'
     
    exec sp_addlinkedsrvlogin  'ALIASNAME',
       'false',
        Null,
       'sa',
       'password'
      

  4.   

    /*不同服务器数据库之间的数据操作*/--创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '用户名 ', '密码 ' --查询示例 
    select * from ITSV.数据库名.dbo.表名 --导入示例 
    select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 
    exec sp_dropserver  'ITSV ', 'droplogins ' --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    --1、openrowset --查询示例 
    select * from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --生成本地表 
    select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) --把本地表导入远程表 
    insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名) 
    select *from 本地表 --更新本地表 
    update b 
    set b.列A=a.列A 
     from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)as a inner join 本地表 b 
    on a.column1=b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 
    exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 ' 
    --查询 
    select * 
    FROM openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    --把本地表导入远程表 
    insert openquery(ITSV,  'SELECT *  FROM 数据库.dbo.表名 ') 
    select * from 本地表 
    --更新本地表 
    update b 
    set b.列B=a.列B 
    FROM openquery(ITSV,  'SELECT * FROM 数据库.dbo.表名 ') as a  
    inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset 
    SELECT   * 
    FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' ).test.dbo.roy_ta 
    --把本地表导入远程表 
      

  5.   

    sp_addlinkedserver '192.168.1.10','','SQLOLEDB','192.168.1.10' 
    sp_addlinkedsrvlogin '192.168.1.10','false',null,'[连接192.168.1.10的帐号]','[密码]'  
      

  6.   

    http://blog.163.com/soli1988_blog/blog/static/176895272201131510109826/