SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver)

先说说问题起因:

测试同学在自己电脑上测试不同的后台,但数据库使用的是相同的名称。

于是创建了新的SQL Server实例,而新实例需要指定不同端口才能启动,改端口后执行sp_addlinkedserver语句后,连接测试不成功。

执行的SQL语句如下:

EXEC master.dbo.sp_addlinkedserver @server = N'UserDBLink', @srvproduct=N'UserDBLink', @provider=N'SQLNCLI', @datasrc=N'(LOCAL)', @catalog=N'UsersDB'
 /* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'UserDBLink',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

先说下问题的解决方案,需要在@datasrc字串中加入端口号,如下:

@datasrc=N'(LOCAL)'修改为@datasrc=N'(LOCAL),端口号'

很简单吧!但,但,但确查了好久,最后还是想到程序中连接字符串用法,才解决了该问题。
程序中链接串是这样的

Provider=SQLOLEDB.1;Password=11;Persist Security Info=True;User ID=sa;Initial Catalog=db;Data Source=127.0.0.1,1433;

在查找问题过程中,查了MSDN文档,居然没有写新端口的写法,难怪该妹妹折腾了好久!,大家帮我看看,难道我错怪MSDN了嘛!!!

这是链接:https://msdn.microsoft.com/zh-cn/library/ms190479.aspx

这是我复制的MSDN描述

sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
   [ , [ @provider= ] 'provider_name' ]
   [ , [ @datasrc= ] 'data_source' ]
   [ , [ @location= ] 'location' ]
   [ , [ @provstr= ] 'provider_string' ]
   [ , [ @catalog= ] 'catalog' ]

参数:

[ @server= ] 'server'

要创建的链接服务器的名称。 server 的数据类型为 sysname,无默认值。

[ @srvproduct= ] 'product_name'

要添加为链接服务器的 OLE DB 数据源的产品名称。 库是nvarchar (128),默认值为 NULL。 如果SQL Server, provider_name, data_source,位置, provider_string,和目录无需指定。

[ @provider= ] 'provider_name'

与此数据源对应的 OLE DB 访问接口的唯一编程标识符 (PROGID)。 provider_name必须是唯一的当前计算机上安装指定的 OLE DB 提供程序。 provider_name是nvarchar (128),默认值为 NULL; 但是,如果provider_name是省略,则使用 SQLNCLI。 (使用 SQLNCLI 并且 SQL Server 将重定向到 SQL Server Native Client OLE DB 访问接口的最新版本。)OLE DB 访问接口应以指定的 PROGID 在注册表中注册。

[ @datasrc= ] 'data_source'

由 OLE DB 访问接口解释的数据源的名称。 data_source是nvarchar (4000)。 data_source作为要初始化的 OLE DB 访问接口的 DBPROP_INIT_DATASOURCE 属性传递。

[ @location= ] 'location'

由 OLE DB 访问接口解释的数据库的位置。 位置是nvarchar (4000),默认值为 NULL。 位置作为要初始化的 OLE DB 访问接口的 DBPROP_INIT_LOCATION 属性传递。

[ @provstr= ] 'provider_string'

OLE DB 访问接口特定的连接字符串,它可标识唯一的数据源。 provider_string是nvarchar (4000),默认值为 NULL。 provstr传递给 IDataInitialize,或者设置为 DBPROP_INIT_PROVIDERSTRING 属性来初始化 OLE DB 访问接口。
针对创建链接的服务器时SQL ServerNative Client OLE DB 提供程序,可以使用服务器 SERVER 关键字指定实例 =servername\instancename指定的特定实例SQL Server。 servername是在其上的计算机的名称SQL Server正在运行,和instancename是的特定实例的名称SQL Server用户将连接到。

[ @catalog= ] 'catalog'

与 OLE DB 访问接口建立连接时所使用的目录。 目录是sysname,默认值为 NULL。 目录作为要初始化的 OLE DB 访问接口的 DBPROP_INIT_CATALOG 属性传递。 在针对 SQL Server 实例定义链接服务器时,目录指向链接服务器映射到的默认数据库。

以上所述是小编给大家介绍的SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

(0)

相关推荐

  • 使用SQL Server 2008远程链接时SQL数据库不成功的解决方法

    远程连接SQL Server 2008,服务器端和客户端配置 关键设置: 第一步(SQL2005.SQL2008): 开始-->程序-->Microsoft SQL Server 2008(或2005)-->配置工具-->SQL Server 配置管理器-->SQL Server网络配置-->MSSQLSERVER(这个名称以具体实例名为准) 的协议-->TCP/IP-->右键-->启用 第二步: SQL2005: 开始-->程序-->Mi

  • sqlserver 多库查询 sp_addlinkedserver使用方法(添加链接服务器)

    Exec sp_droplinkedsrvlogin ZYB,Null --删除映射(录与链接服务器上远程登录之间的映射) Exec sp_dropserver ZYB --删除远程服务器链接 EXEC sp_addlinkedserver @server='ZYB',--被访问的服务器别名 @srvproduct='', @provider='SQLOLEDB', @datasrc="/Server2" --要访问的服务器 EXEC sp_addlinkedsrvlogin 'ZYB

  • sysservers 中找不到服务器,请执行 sp_addlinkedserver 将该服务器添加到sysserver

    解决办法如下: SELECT @@SERVERNAME 先用这个指令查一下看,是不是没有修改之前的用户名. 然后执行下面的语句: 复制代码 代码如下: EXEC sp_dropserver ''原服务器名'' EXEC sp_addserver @server=''现在的服务器名'', @local = ''local'' 看到执行成功之后,再运行一下:SELECT @@SERVERNAME 可以看到值没有变化,还是原来的值,不要着急,这时候只需要重新起动一下sql的服务就可以了. 开始-运行-

  • SQL Server 远程连接服务器详细配置(sp_addlinkedserver)

    远程链接服务器详细配置 --建立连接服务器 EXEC sp_addlinkedserver '远程服务器IP','SQL Server' --标注存储 EXEC sp_addlinkedserver @server = 'server', --链接服务器的本地名称.也允许使用实例名称,例如MYSERVER\SQL1 @srvproduct = 'product_name' --OLE DB数据源的产品名.对于SQL Server实例来说,product_name是'SQL Server' , @

  • SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver)

    先说说问题起因: 测试同学在自己电脑上测试不同的后台,但数据库使用的是相同的名称. 于是创建了新的SQL Server实例,而新实例需要指定不同端口才能启动,改端口后执行sp_addlinkedserver语句后,连接测试不成功. 执行的SQL语句如下: EXEC master.dbo.sp_addlinkedserver @server = N'UserDBLink', @srvproduct=N'UserDBLink', @provider=N'SQLNCLI', @datasrc=N'(L

  • jdbc链接远程数据库进行修改url操作

    链接远程数据库的时候,要把获得链接的url进行修改,本文分享了具体代码,供大家参考,具体内容如下 package com.test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * jdbc链接远程数据库(公司的176库)操作 * * @Author

  • PHP下 Mongodb 连接远程数据库的实例代码

    WINDOWS 下装MongoDB 先去官网下载  :https://www.mongodb.com/download-center#atlas 1.在mongodb的文件夹下创建 data.logs 文件夹 和mongo.conf 命令行命令! D:\mongodb\bin> mongod --dbpath D:\mongodb\data --logpath=D:\mongodb\logs\mongodb.log --logappend D:\mongodb\bin> mongod -dbp

  • DB2新手使用的一些小笔记:新建实例、数据库路径不存在、客户端连接 .

    首先,是添加数据库实例: DB2的实例之间是相互独立的,实例可以被看作是数据库的容器.而默认DB2装好后会自己建一个名为DB2的实例.我们这里需要新建一个,命令这样敲: 在db2的命令行工具里面打开命令行,然后输入: 复制代码 代码如下: db2icrt INSTNAME 它这个实例名还挺恶心的,必须是小于8个字符的名字. 再用命令行创建好以后才能用那个控制中心的添加实例的功能来添加刚才创建的实例.其实这个添加只是把已有的实例添加到GUI的控制中心里,而不是创建实例....所以,必须注意的是,在

  • Sql Server下数据库链接的使用方法

    有时候我们希望在一个sqlserver下访问另一个sqlserver数据库上的数据,或者访问其他oracle数据库上的数据,要想完成这些操作,我们首要的是创建数据库链接. 数据库链接能够让本地的一个sqlserver登录用户映射到远程的一个数据库服务器上,并且像操作本地数据库一样.那么怎么创建数据库链接呢?我现在有两种方法可以实现. 第一种:在 sqlserver 企业管理器中,建立,这个比较简单的,首先在 安全性--〉数据库链接 上点右键 ,在出现的菜单中点 新建数据库链接 ,然后会弹出一个界

  • SQL Server实时同步更新远程数据库遇到的问题小结

    工作中遇到这样的情况,需要在更新表TableA(位于服务器ServerA 172.16.8.100中的库DatabaseA)同时更新TableB(位于服务器ServerB 172.16.8.101中的库DatabaseB). TableA与TableB结构相同,但数据数量不一定相同,应为有可能TableC也在更新TableB.由于数据更新不频繁,为简单起见想到使用了触发器Tirgger.记录一下遇到的一些问题: 1. 访问异地数据库 在ServerA 中创建指向ServerB的链接服务器,并做好

  • SQL Server 出现Error: 1326错误(管理器无法连接远程数据库)问题解决方案

    SQL Server 出现Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例的问题,错误描述信息摘录如下: An error has occurred while establishing a connection to the server. (provider: Named Pipes Provider, error: 40 – Could not open a connection to

  • 远程数据库的表超过20个索引的影响详细解析

    昨天同事参加了一个研讨会,有提到一个案例.一个通过dblink查询远端数据库,原来查询很快,但是远端数据库增加了一个索引之后,查询一下子变慢了. 经过分析,发现那个通过dblink的查询语句,查询远端数据库的时候,是走索引的,但是远端数据库添加索引之后,如果索引的个数超过20个,就会忽略第一个建立的索引,如果查询语句恰好用到了第一个建立的索引,被忽略之后,只能走Full Table Scan了. 听了这个案例,我查了一下,在oracle官方文档中,关于Managing a Distributed

  • SQL server 2005将远程数据库导入到本地的方法

    远程数据库与本地数据库数据之间的导入导出,从来都是一个值得人关注的问题. 下面,就给你详细介绍SQL2005将远程数据库导入到本地的方法. 首先,将SQL2005打开.方法是:"开始"→"程序"→"Microsoft SQL Server 2005"→"SQL Server Management Studio",这样,就可以把本地的SQL2005打开了. 打开了本地的SQL2005之后,现在,如何把远程数据库中的数据库,导入到

  • 详解SQL Server数据库链接查询的方式

    SQL Server数据库链接查询的方式的相关知识是本文我们主要要介绍的内容,我们知道,通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志.多表连接查询是使用Sql的基本操作,但连接的方式却有多种,熟练使用这些连接方式能够简化Sql语句,提高数据库运行效率. 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中.当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息.连接操作给用户带来很

随机推荐