Назад | Перейти на главную страницу

Добавление связанного сервера через Powershell

Я пытаюсь добавить связанный сервер к моей локальной установке SQL Server 2008 R2 из сценария Powershell. Вот что я пробовал до сих пор (и варианты):

EXEC master.dbo.sp_addlinkedsrvlogin 
@rmtsrvname = N'<RemoteComputerName>', 
@useself=N'False' ,
@locallogin = N'domain\username' ,
@rmtuser = N'username',
@rmtpassword = N'password';
GO

Кажется, что связывание работает нормально, но как только я пытаюсь выполнить запрос (используя Invoke-Sqlcmd в Powershell), я получаю сообщение об ошибке входа в систему.

ОБНОВЛЕНИЕ: я также пробовал связать серверы и выполнить простой запрос в SQL Server Management Studio. Я получаю те же результаты, поэтому проблема не связана с Powershell. Кроме того, я могу запросить связанные серверы, если установлю для @useself значение true. Однако это условие не всегда выполняется на практике (т.е. мой сценарий не должен требовать, чтобы все серверы были зарегистрированы как один и тот же пользователь).

Я что-то упускаю?

Возможно, стоит потратить время на ознакомление с Объекты управления SQL Server. Вот это пример того, как вы можете создавать серверы ссылок через SMO:

#Get a server object which corresponds to the default instance
$svr = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server

#Create a linked server object which corresponds to an OLEDB type of SQL server product
$lsvr = New-Object -TypeName Microsoft.SqlServer.Management.SMO.LinkedServer -argumentlist $svr,"OLEDBSRV"

#When the product name is SQL Server the remaining properties are not required to be set. 
$lsvr.ProductName = "SQL Server"

#Create the Database Object
$lsvr.Create() 

Вы можете указать учетные данные для своего локального SQL-сервера, используя ServerConnection объект и для связанного сервера с помощью LinkedServerLogin объект.