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了
这是我复制的MSDN描述
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
[ , [ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
参数:
sql server拼接字符串函数[ @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),希望对⼤家有所帮助,如果⼤家有任何疑问欢迎给我留⾔,⼩编会及时回复⼤家的!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论