Localdb 链接服务器

Dav*_*ave 8 sql linked-server localdb

我正在尝试在本地复制生产环境,并且生产数据库使用链接服务器。我已经能够创建 localdb 的多个实例;是否可以在 localdb 实例之间创建链接服务器?如果没有,我还有哪些其他可用选项(理想情况下不必使用完整的 sql 实例)。

Dav*_*ave 6

不确定回答你自己的问题是否是一种不好的形式,但如果其他人将来也遇到同样的问题,事实证明这是可能的,而且非常简单。创建 localdb 的新实例后,请使用以下命令:

USE master

IF EXISTS(SELECT * from sys.servers WHERE name = N'{serverName}')
BEGIN
    DECLARE @serverId INT
    SELECT @serverId = server_id FROM sys.servers WHERE name = N'{serverName}'
    IF EXISTS(SELECT * FROM sys.linked_logins WHERE server_id = @serverId)
    BEGIN
        EXEC sp_droplinkedsrvlogin '{serverName}', null
    END

    EXEC sp_dropserver '{serverName}'
END

EXEC sp_addlinkedserver     
   @server=N'{serverName}',   
   @provider=N'SQLNCLI',   
   @srvproduct=N'',
   @datasrc=N'{dataSource}';  
EXEC sp_addlinkedsrvlogin
    @rmtsrvname=N'{serverName}',
    @useself='true'
Run Code Online (Sandbox Code Playgroud)


小智 6

稍微扩展一下戴夫的自动应答......

如果远程数据库尚未附加到其实例,则需要在 sp_addlinked 服务器的 Provider String 参数中包含其他连接详细信息。

EXEC sp_addlinkedserver     
   @server=N'{serverName}',   
   @provider=N'SQLNCLI',   
   @srvproduct=N'',
   @datasrc=N'{dataSource}'
   @provstr=N'{providerString}';
Run Code Online (Sandbox Code Playgroud)

就我而言,我使用了:

{dataSource} = (LocalDB)\MSSQLLocalDB

{providerString} = AttachDbFileName=C:\Temp\Test.mdf;Integrated Security=True
Run Code Online (Sandbox Code Playgroud)