SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver)
先说说问题起因:
测试同学在自己电脑上测试不同的后台,但数据库使用的是相同的名称。
于是创建了新的SQLServer实例,而新实例需要指定不同端口才能启动,改端口后执行sp_addlinkedserver语句后,连接测试不成功。
执行的SQL语句如下:
EXECmaster.dbo.sp_addlinkedserver@server=N'UserDBLink',@srvproduct=N'UserDBLink',@provider=N'SQLNCLI',@datasrc=N'(LOCAL)',@catalog=N'UsersDB' /*Forsecurityreasonsthelinkedserverremoteloginspasswordischangedwith########*/ EXECmaster.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;PersistSecurityInfo=True;UserID=sa;InitialCatalog=db;DataSource=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'
要添加为链接服务器的OLEDB数据源的产品名称。库是nvarchar(128),默认值为NULL。如果SQLServer,provider_name,data_source,位置,provider_string,和目录无需指定。
[@provider=]'provider_name'
与此数据源对应的OLEDB访问接口的唯一编程标识符(PROGID)。provider_name必须是唯一的当前计算机上安装指定的OLEDB提供程序。provider_name是nvarchar(128),默认值为NULL;但是,如果provider_name是省略,则使用SQLNCLI。(使用SQLNCLI并且SQLServer将重定向到SQLServerNativeClientOLEDB访问接口的最新版本。)OLEDB访问接口应以指定的PROGID在注册表中注册。
[@datasrc=]'data_source'
由OLEDB访问接口解释的数据源的名称。data_source是nvarchar(4000)。data_source作为要初始化的OLEDB访问接口的DBPROP_INIT_DATASOURCE属性传递。
[@location=]'location'
由OLEDB访问接口解释的数据库的位置。位置是nvarchar(4000),默认值为NULL。位置作为要初始化的OLEDB访问接口的DBPROP_INIT_LOCATION属性传递。
[@provstr=]'provider_string'
OLEDB访问接口特定的连接字符串,它可标识唯一的数据源。provider_string是nvarchar(4000),默认值为NULL。provstr传递给IDataInitialize,或者设置为DBPROP_INIT_PROVIDERSTRING属性来初始化OLEDB访问接口。
针对创建链接的服务器时SQLServerNativeClientOLEDB提供程序,可以使用服务器SERVER关键字指定实例=servername\instancename指定的特定实例SQLServer。servername是在其上的计算机的名称SQLServer正在运行,和instancename是的特定实例的名称SQLServer用户将连接到。
[@catalog=]'catalog'
与OLEDB访问接口建立连接时所使用的目录。目录是sysname,默认值为NULL。目录作为要初始化的OLEDB访问接口的DBPROP_INIT_CATALOG属性传递。在针对SQLServer实例定义链接服务器时,目录指向链接服务器映射到的默认数据库。
以上所述是小编给大家介绍的SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!