2016-11-22 102 views
3

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

+0

@马特是否与该的LocalDB专门的工作?我似乎无法在我创建的实例之间进行通信。 – Dave

回答

1

不确定这是否是不好的形式来回答你自己的问题,但如果其他人在未来有相同的问题,事实证明这是可能的,非常简单。一旦你创建新的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' 
2

为了扩大在Dave的自动应答一点点......

如果远程数据库尚未连接到其背景呢,将需要在sp_addlinked服务器的提供程序字符串参数中包含其他连接详细信息。

EXEC sp_addlinkedserver  
    @server=N'{serverName}', 
    @provider=N'SQLNCLI', 
    @srvproduct=N'', 
    @datasrc=N'{dataSource}' 
    @provstr=N'{providerString}'; 

在我来说,我使用:

{dataSource} = (LocalDB)\MSSQLLocalDB 

{providerString} = AttachDbFileName=C:\Temp\Test.mdf;Integrated Security=True