当前位置: 移动技术网 > IT编程>数据库>MSSQL > SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver)

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

2017年12月01日  | 移动技术网IT编程  | 我要评论

披沙拣金的意思,中法翻译,淡淡忧伤的句子

先说说问题起因:

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

于是创建了新的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了嘛!!!

这是链接:

这是我复制的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),希望对大家有所帮助

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网