gpt4 book ai didi

sql-server - 使用不同的凭据调用 SQLCmd

转载 作者:行者123 更新时间:2023-12-02 18:44:26 24 4
gpt4 key购买 nike

背景:我正在本地运行一个脚本,该脚本必须以系统身份运行,我们不解释为什么会这样。 :)该脚本尝试通过一个简单的查询来检查我的 MSSQL 集群的运行状况。然而,我遇到的问题是本地系统帐户无权访问远程数据库。目前,我已经尝试了很多方法,稍后我将介绍这些方法,但老实说,我愿意寻求任何有意义的解决方案。如果这意味着在数据库中创建一个可以回答我的简单查询的本地帐户,那也很好。

这是我到目前为止所拥有的:

$Server = 'myserver.domain.tld'
$Database = 'myDatabase'
$Query = 'SELECT DB_NAME() AS DataBaseName'
$Username = 'myDomain\myUsername'
$Password = 'myPasswordWithPlainText'
Invoke-SQLCmd -ServerInstance $Server -Database $Database -ConnectionTimeout 300 -QueryTimeout 600 -Query $Query -Username $Username -Password $Password

结果:Invoke-Sqlcmd:用户“myDomain\myUsername”登录失败

也许 Invoke-SQL 不采用 Windows 身份验证,但它不使用 -Credential。于是我尝试使用 Invoke-Command 作为包装器。

$Server = 'myserver.domain.tld'
$Database = 'myDatabase'
$Query = 'SELECT DB_NAME() AS DataBaseName'
$Username = 'myDomain\myUsername'
$Password = 'myPasswordWithPlainText'
$secpasswd = ConvertTo-SecureString $Password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($Username, $secpasswd)
Invoke-Command -script {Invoke-SQLCmd -ServerInstance $Server -Database $Database -ConnectionTimeout 300 -QueryTimeout 600 -Query $Query} -Credential $Credential

这让我明白了:Invoke-Command:无法使用指定的命名参数解析参数集。

所以..我被困住了。有什么想法吗?

最佳答案

我使用 Get-Credential,然后使用 Invoke-Command -AsJob 从 .sql 文件运行脚本。例如

$s = 'myserver.domain.tld';
$scriptpath = 'C:\myfile.sql';
$cred = Get-Credential -credential domain\user;
$sess = New-PSSession -ComputerName $s -Credential $cred -Authentication CredSSP -Name 'S1';
$job1 = Invoke-Command -Session $sess -FilePath $scriptpath -AsJob -JobName 'J1';
# -ArgumentList $args;

Get-Job | Wait-Job;
Get-Job -Name 'J1';

Get-PSSession | Remove-Session;
Get-Job | Remove-Job;

但请注意,$cred 行将启动一个提示来确认/验证凭据 - 我在脚本中也有数据库名称,所以我不确定如何更改此逻辑以将脚本定向到任何数据库(如果需要为每个服务器自定义)。

关于sql-server - 使用不同的凭据调用 SQLCmd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7154122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com