我正在尝试从 Powershell 脚本中将链接服务器添加到本地 SQL Server 2008 R2 设置。以下是我到目前为止尝试过的方法(以及变体):
EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname = N'<RemoteComputerName>',
@useself=N'False' ,
@locallogin = N'domain\username' ,
@rmtuser = N'username',
@rmtpassword = N'password';
GO
链接似乎运行正常,但是当我尝试执行查询(在 Powershell 中使用 Invoke-Sqlcmd)时,我收到一条错误消息,提示登录失败。
更新:我还尝试链接服务器并在 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()