请执行sp_addlinkedserver 将该服务器添加到sysserver解决办法

本文提供了两种解决SQL2005升级后添加数据时报错的方法:一是通过修改连接字符串使用'SQLOLEDB'作为提供者;二是通过执行存储过程'sp_addlinkedserver'来添加链接服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:http://www.supidea.com/post/sp_addlinkedserver.aspx

       公司数据库升级成SQL2005了,原来的SQL2000数据库直接附件上去后,发现添加数据的时候报SQL错误“请执行sp_addlinkedserver 将该服务器添加到sysserver解决办法”。在网上找了好多文章,都说需要执行sp_addlinkedserver 这个存储教程,要在执行SQL命令的SQL Server器上进行设置,于是赶紧查看关于sp_addlinkedserver 系统存储过程的资料,但细分析,原其实还有更简便的方法,不需要在SQL查询分析器中执行任何查询的查询存储过程。
       以下是我总结的两个解决系统报“在sysservers 中找不到服务器 'www.Supidea.com'。请执行sp_addlinkedserver 将该服务器添加到sysservers。”的方法。

       解决方法1:(Supidea.com 强烈推荐)
       对于SQL Server可以采用“SQLOLEDB”作为@provider,也就是说只要修改一下连接语句就好了。
       原来的SQL连接语句为:ConnData="driver={SQL Server};server=www.supidea.com;uid=www.supidea.com;pwd=supidea.com;database=Supidea"
       修改使用“SQLOLEDB”作为@provider的连接语句为:ConnData="Provider=SQLOLEDB.1;Persist Security Info=false;server=www.supidea.com;uid=www.supidea.com;pwd=supidea.com;database=supidea"
       
简单点说:也就是把连接语句中的driver={SQL Server}”换为Provider=SQLOLEDB.1;Persist Security Info=false;就可以了
       
       解决方法2:
      
       还有一种方法说那便使用执行下面的存储过程来解决,但因看上去比较麻烦,所以不推荐。
       EXEC sp_addlinkedserver 
          @server = 'www.supidea.com', 
          @provider = 'MSDASQL',
          @provstr = 'DRIVER={SQL Server};SERVER=www.supidea.com;UID=sa;PWD=www.supidea.com;'
        --@server是以后执行SQL命令时引用的服务器名,它可以任意命名,不一定需要与真实SQL Server服务器同名。
        --@provider请按资料表格中提供的参数给定。

        如果上面说明的请执行sp_addlinkedserver 将该服务器添加到sysserver解决办法都不能解决您遇到的问题,那可能就是SQL数据库的问题了,您可能需要重装SQL来解决此问题

       总结:
       在写SQL连接语句的时候,尽量使用“SQLOLEDB”作为@provider来连接:“Provider=SQLOLEDB.1;Persist Security Info=false;”,这样的连接语句感觉比“driver={SQL Server}”的兼容性能要来的稳定。
       

<think>我们正在处理一个关于SQL Server链接服务器的问题。用户报告说在sys.servers中找不到服务器'192.168.1.140',需要验证服务器名称并可能使用sp_addlinkedserver添加。根据引用[1]和[2]中的错误信息,类似的问题是因为在sys.servers中找不到指定的服务器名称,解决方案是验证服务器名称并执行sp_addlinkedserver存储过程添加链接服务器。步骤:1.首先,验证服务器名称是否正确。确保没有拼写错误,并且服务器确实存在且网络可访问。2.如果确认服务器名称正确,那么需要使用sp_addlinkedserver存储过程添加链接服务器。关于sp_addlinkedserver的基本用法:存储过程sp_addlinkedserver用于创建一个链接服务器,允许SQLServer在分布式查询中引用其他SQLServer或不同的数据源。基本语法:```sqlEXEC sp_addlinkedserver@server= 'server_name',--要创建的链接服务器的名称(这里是'192.168.1.140')@srvproduct= 'product_name', --对于SQLServer,通常为''(空字符串)或'SQLServer'@provider ='provider_name',--提供程序名称,对于SQL Server,使用'SQLNCLI'(SQLServerNative Client)@datasrc= 'data_source'--数据源,即要连接的服务器地址(这里是'192.168.1.140')或实例名```注意:如果目标服务器SQL Server实例,并且使用命名实例,则data_source应该是“服务器名\实例名”。此外,还需要设置登录凭据。使用sp_addlinkedsrvlogin存储过程添加登录映射。示例:假设我们要添加一个到SQLServer的链接服务器服务器地址为'192.168.1.140',使用SQLServer身份验证,登录名为'remote_user',密码为'password'。步骤:1.添加链接服务器:```sqlEXECsp_addlinkedserver@server ='192.168.1.140',@srvproduct ='',@provider ='SQLNCLI',@datasrc= '192.168.1.140'```2.添加登录映射:```sqlEXEC sp_addlinkedsrvlogin@rmtsrvname= '192.168.1.140',@useself= 'FALSE',@rmtuser ='remote_user',@rmtpassword ='password'```注意:@useself设置为'FALSE'表示使用指定的远程登录凭据,而不是当前登录的凭据。3.验证链接服务器:可以通过以下查询检查链接服务器是否添加成功:```sqlSELECT* FROMsys.servers;```4.测试连接:使用一个简单的查询测试,例如:```sqlSELECT*FROM [192.168.1.140].[database_name].[schema].[table]```注意事项: -确保目标服务器允许远程连接,并且防火墙设置允许SQLServer端口(默认1433)的通信。-如果使用命名实例,确保指定正确的实例名,并且SQLServer Browser服务正在运行(如果需要)。-如果目标服务器不是SQL Server,则需要指定不同的提供程序(如Oracle的'MSDAORA',OLEDB forODBC的'MSDASQL'等)。如果用户遇到权限问题,可能需要检查SQL Server服务的运行账户是否具有足够的权限,或者使用具有足够权限的账户执行上述存储过程。根据引用[2]中的上下文,用户可能在搭建同事的程序模块时遇到此问题,因此还需要确保应用程序使用的连接字符串或配置中指定的服务器名称与添加的链接服务器名称一致。因此,我们将按照上述步骤指导用户解决问题。</think>### SQL Server 添加链接服务器指南 当在 `sys.servers` 中找不到指定服务器(如 `192.168.1.140`)时,需通过 `sp_addlinkedserver` 存储过程添加链接服务器。以下是完整操作步骤: #### 1. **验证服务器信息** - 确认目标服务器 `192.168.1.140` 的 **IP地址/主机名** 是否正确 - 检查目标实例是否为 **命名实例**(格式:`IP\实例名`) - 使用 `ping 192.168.1.140` 测试网络连通性 - 确保目标 SQL Server 已启用 **远程连接**(SQL Server 配置管理器 → 网络配置) #### 2. **添加链接服务器** 使用标准语法添加链接服务器: ```sql EXEC sp_addlinkedserver @server = N'192.168.1.140', -- 链接服务器名称(可自定义) @srvproduct = N'', -- 留空表示 SQL Server @provider = N'SQLNCLI', -- SQL Server Native Client @datasrc = N'192.168.1.140' -- 实际服务器地址/IP ``` **特殊场景处理**: - **命名实例**:`@datasrc = '192.168.1.140\INSTANCE_NAME'` - **非默认端口**:`@datasrc = '192.168.1.140,51433'` #### 3. **配置登录凭据** 添加登录映射(二选一): ```sql -- 方式1:使用当前登录凭据 EXEC sp_addlinkedsrvlogin @rmtsrvname = '192.168.1.140', @useself = 'TRUE' -- 方式2:指定远程凭据 EXEC sp_addlinkedsrvlogin @rmtsrvname = '192.168.1.140', @useself = 'FALSE', @rmtuser = 'remote_user', @rmtpassword = 'password123' ``` #### 4. **验证配置** ```sql -- 检查 sys.servers SELECT * FROM sys.servers WHERE name = '192.168.1.140' -- 测试连接(替换为实际对象) SELECT TOP 1 * FROM [192.168.1.140].[master].[sys].[databases] ``` #### 5. **常见错误处理** - **连接失败**: - 检查防火墙是否开放 **1433端口**(或自定义端口) - 在目标服务器执行:`sp_readerrorlog 0,1,'192.168.1.140'` - **权限不足**: ```sql GRANT ALTER ANY LINKED SERVER TO [当前登录名] ``` - **提供程序未注册**: ```sql EXEC sp_serveroption '192.168.1.140', 'provider', 'SQLNCLI11' ``` > **关键提示**: > 1. 链接服务器名称(`@server`)是本地别名,可与实际地址不同 > 2. 分布式事务需启用 **MSDTC服务**[^1] > 3. 删除链接服务器:`EXEC sp_dropserver '192.168.1.140','droplogins'`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值