各位用户为了找寻关于SQLServer2008新实例远程连接数据库问题(sp_addlinkedserver)的资料费劲了很多周折。这里教程网为您整理了关于SQLServer2008新实例远程连接数据库问题(sp_addlinkedserver)的相关资料,仅供查阅,以下为您介绍关于SQLServer2008新实例远程连接数据库问题(sp_addlinkedserver)的详细内容
先说说问题起因:
测试同学在自己电脑上测试不同的后台,但数据库使用的是相同的名称。
于是创建了新的SQL Server实例,而新实例需要指定不同端口才能启动,改端口后执行sp_addlinkedserver语句后,连接测试不成功。
执行的SQL语句如下:
? 1 2 3EXEC
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字串中加入端口号,如下:
? 1@datasrc=N
'(LOCAL)'
修改为@datasrc=N
'(LOCAL),端口号'
很简单吧!但,但,但确查了好久,最后还是想到程序中连接字符串用法,才解决了该问题。 程序中链接串是这样的
? 1Provider=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描述
? 1 2 3 4 5 6sp_addlinkedserver [ @server= ]
'server'
[ , [ @srvproduct= ]
'product_name'
]
[ , [ @provider= ]
'provider_name'
]
[ , [ @datasrc= ]
'data_source'
]
[ , [ @location= ]
'location'
]
[ , [ @provstr= ]
'provider_string'
]
[ , [ @catalog= ]
'catalog'
]
参数:
? 1[ @server= ]
'server'
要创建的链接服务器的名称。 server 的数据类型为 sysname,无默认值。
? 1[ @srvproduct= ]
'product_name'
要添加为链接服务器的 OLE DB 数据源的产品名称。 库是nvarchar (128),默认值为 NULL。 如果SQL Server, provider_name, data_source,位置, provider_string,和目录无需指定。
? 1[ @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 在注册表中注册。
? 1[ @datasrc= ]
'data_source'
由 OLE DB 访问接口解释的数据源的名称。 data_source是nvarchar (4000)。 data_source作为要初始化的 OLE DB 访问接口的 DBPROP_INIT_DATASOURCE 属性传递。
? 1[ @location= ]
'location'
由 OLE DB 访问接口解释的数据库的位置。 位置是nvarchar (4000),默认值为 NULL。 位置作为要初始化的 OLE DB 访问接口的 DBPROP_INIT_LOCATION 属性传递。
? 1[ @provstr= ]
'provider_string'
OLE DB 访问接口特定的连接字符串,它可标识唯一的数据源。 provider_string是nvarchar (4000),默认值为 NULL。 provstr传递给 IDataInitialize,或者设置为 DBPROP_INIT_PROVIDERSTRING 属性来初始化 OLE DB 访问接口。 针对创建链接的服务器时SQL ServerNative Client OLE DB 提供程序,可以使用服务器 SERVER 关键字指定实例 =servernameinstancename指定的特定实例SQL Server。 servername是在其上的计算机的名称SQL Server正在运行,和instancename是的特定实例的名称SQL Server用户将连接到。
? 1[ @catalog= ]
'catalog'
与 OLE DB 访问接口建立连接时所使用的目录。 目录是sysname,默认值为 NULL。 目录作为要初始化的 OLE DB 访问接口的 DBPROP_INIT_CATALOG 属性传递。 在针对 SQL Server 实例定义链接服务器时,目录指向链接服务器映射到的默认数据库。
以上所述是小编给大家介绍的SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!
原文链接:http://www.2cto.com/database/201705/639710.html