0
SqlPs 모듈에서 "Restore-SqlDatabase"를 호출하는 Powershell 함수가 있으며 splatting을 통해 함수에 매개 변수를 보냅니다. 나는 그것이 내가 기대했던대로 작동하지 않는 이유를 알아 내려고 노력하고있다. 내 코드는 다음과 같습니다.powershell 함수 호출, splatting을 통한 매개 변수 전송
$SqlParams = @{"ServerInstance"="'$ServerName'";
"Database"="'$DatabaseName'";
"BackupFile"="'$BackupFile'";}
if($Credential -ne $null) {
$SqlParams.Add("SqlCredential", $Credential)
}
if($ReplaceDatabase) {
$SqlParams.Add("ReplaceDatabase", $null)
}
try { $PathResult = Test-Path -Path $RestorePath } catch { $PathResult = $False }
if($PathResult) {
Write-Verbose "RestorePath exists, using: $RestorePath"
$RelocateData = New-Object 'Microsoft.SqlServer.Management.Smo.RelocateFile, Microsoft.SqlServer.SmoExtended, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'
$RelocateData.LogicalFileName = $DatabaseName
$RelocateData.PhysicalFileName = $(Join-Path -Path $RestorePath -ChildPath "$DatabaseName.mdf")
$RelocateLog = New-Object 'Microsoft.SqlServer.Management.Smo.RelocateFile, Microsoft.SqlServer.SmoExtended, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'
$RelocateLog.LogicalFileName = "$DatabaseName`_log"
$RelocateLog.PhysicalFileName = $(Join-Path -Path $RestorePath -ChildPath "$DatabaseName`_log.ldf")
$RelocateFile = @($RelocateData,$RelocateLog)
$SqlParams.Add("RelocateFile", $RelocateFile)
}
try{
Write-Verbose "Using the following parameters:"
$paramString = $SqlParams | Out-String
Write-Verbose $paramString
Restore-SqlDatabase @SqlParams
} catch {
Write-Error $_
Write-Output "Restore failed..."
return
}
Write-Output "Database successfully restored!"
실행하면 데이터베이스에 연결되지 않습니다. 그러나 "param"해시 테이블과 동일한 매개 변수 값을 사용하여 터미널에서 직접 명령을 실행하면 예상대로 정확하게 작동합니다.
나를위한 도움말?
정확한 오류는 무엇입니까? '$ Error' 목록의 내용은 무엇입니까? 'Restore-SqlDatabase'에 의해보고 된 매개 변수가 누락되었거나 지정되지 않았습니까? –
이제 다음 오류가 발생합니다 : ' 'DatabaseObject'매개 변수의 인수를 확인할 수 없습니다. 인수가 널이거나 비어 있습니다. NULL 또는 비어 있지 않은 인수 을 제공 한 다음 명령을 다시 시도하십시오. 줄에 : 1 char : 1' '$ Error'리스트에서 유일하게 중요합니다. –
작은 따옴표를 지우려고했지만 도움이되지 않았습니다. '$ SqlParams = @ { "ServerInstance"= $ ServerName; "데이터베이스"= $ DatabaseName; "BackupFile"= $ BackupFile; }' –