Добавление связанного сервера через 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. Однако это условие не всегда выполняется на практике (т.е. мой сценарий не должен требовать, чтобы все серверы были зарегистрированы как один и тот же пользователь).

Я что-то пропустил?

1 ответ

Возможно, стоит потратить время на изучение объектов управления 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.

Другие вопросы по тегам