mat*_*ewb 14 sql-server linked-server sql-server-2014
我正在尝试servername\instancename
使用以下调用在 SQL Server 2014 实例上创建链接服务器:
EXEC master.dbo.sp_addlinkedserver
@server = N'servername\instancename',
@srvproduct=N'SQL Server'
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Msg 15028, Level 16, State 1, Procedure sp_addlinkedserver, Line 82
The server 'servername\instancename' already exists.
Run Code Online (Sandbox Code Playgroud)
这在 SQL Server 2005 中运行良好,并且根据MSDN,
链接服务器不必是 SQL Server 的另一个实例,
所以我不确定最近版本中不允许这样做的更改。使用 UI 会生成类似的消息:
不能将本地 SQL Server 创建为链接服务器。
我知道请求是一件奇怪的事情,但它是为了支持一些在 2005 年工作的遗留代码(并且曾经在不同的实例上)。文档指出它应该可以工作,但事实并非如此。有没有办法让它在 2014 年工作,或者我将不得不修改底层代码?
mat*_*ewb 20
事实证明,我能够让它使用不同的参数。
EXEC master.dbo.sp_addlinkedserver
@server = N'LinkedServerName',
@srvproduct=N'',
@provider=N'SQLNCLI',
@provstr=N'DRIVER={SQL Server};Server=(local)\InstanceName; Initial Catalog=DBNAME;uid=user;pwd=password;'
Run Code Online (Sandbox Code Playgroud)
Aar*_*and 14
与其在代码中处理链接服务器引用,不如考虑一次性代码投资,包括在当前拥有链接服务器的任何位置使用同义词。
所以而不是:
SELECT whatever FROM someserver.somedb.dbo.mytable;
Run Code Online (Sandbox Code Playgroud)
你有一个同义词:
CREATE SYNONYM dbo.mytablepointer FOR someserver.somedb.dbo.mytable;
Run Code Online (Sandbox Code Playgroud)
那么你的代码很简单:
SELECT whatever FROM dbo.mytablepointer;
Run Code Online (Sandbox Code Playgroud)
然后,如果您将对象移动到不同的服务器,您只需删除并重新创建同义词,而不必接触代码:
DROP SYNONYM dbo.mytablepointer;
CREATE SYNONYM dbo.mytablepointer FOR otherserver.somedb.dbo.mytable;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22222 次 |
最近记录: |