Localdb связанные серверы

Я пытаюсь реплицировать производственную среду локально, и производственная база данных использует связанный сервер. Я был в состоянии создать несколько экземпляров localdb; Можно ли создать связанный сервер между экземплярами localdb? Если нет, какие другие варианты у меня есть (в идеале, без необходимости использовать полный экземпляр SQL).

2 ответа

Решение

Не уверен, что отвечать на ваш вопрос плохо, но если в будущем у кого-то возникнет такая же проблема, оказывается, что это возможно и довольно просто. Как только вы создали новый экземпляр 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'

Чтобы расширить авто-ответ Дейва немного...

Если удаленная база данных еще не была присоединена к ее экземпляру, необходимо будет включить дополнительные сведения о соединении в аргумент "Строка поставщика" сервера 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
Другие вопросы по тегам