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