powershell脚本目标是将数据库从一台服务器复制到另一台服务器,然后在目标服务器上执行简单查询。 当前用户没有数据库服务器的权限,因此在两个服务器上都创建了一个登录名,密码以安全字符串的形式存储在文件中:
$sourceServer = "ServerA"
$destServer = "ServerB"
$restoreUser = "replicationuser"
$encPass = Get-Content -Path ".\SecuredPass.spf"
$secString= $encPass | ConvertTo-SecureString -Key (1..16)
$restoreCredential=New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $restoreUser, $secString
Copy-DbaDatabase -Source $sourceServer -Destination $destServer -Database "MyDatabase" -SourceSqlCredential $restoreCredential -DestinationSqlCredential $restoreCredential -BackupRestore -NetworkShare "\\MyShare\Databases" -WithReplace -EnableException
$sqlQuery = 'select 1+1'
Invoke-DbaSqlQuery -Query $sqlQuery -SqlInstance $destServer -SqlCredential $restoreCredential
脚本运行时,将复制数据库,但是查询执行将显示以下消息:
WARNING: [15:53:29][Invoke-DbaQuery] Failure | Property LoginSecure cannot be changed or read after a connection string has been set.
在运行查询时应如何使用凭据?
答案 0 :(得分:0)
我们在Invoke-DbaQuery
中处理凭据的方式存在一些问题。您可以尝试使用最新版本,看看是否仍然存在此问题。