Я пытаюсь выполнить поиск, есть ли имя машины partialr в базе данных, и если мы заменим его новым именем.
Мы используем powershell
Add-pssnapin sqlserverprovidersnapin100 -ErrorAction SilentlyContinue
Add-pssnapin sqlservercmdletsnapin100 -ErrorAction SilentlyContinue
$SelectQuery = "SELECT [$columnName] FROM [$DatabaseName].[dbo].[$TableName] Where [$columnName] is not null;"
try {
$Qresult= Invoke-sqlcmd -query $SelectQuery -Database $DatabaseName -ServerInstance $srvInstance -Verbose
$Qresult = $Qresult| % { $_.$columnName+"`n"
#check whether the Machine Name is found if the column value is processed in URL format
$IsOldFoundFromURL=TestOldMachineFromURL $Qresult $OldMachineName
#check whether the Machine Name is found if the column value is processed in Connection string format
$IsOldFoundFromConn=TestOldMachineFromconnstring $Qresult $OldMachineName
If ( $IsOldFoundFromURL -or $IsOldFoundFromConn ) {
LogWrite "Columns Name before changing: $columnName "
LogWrite "$Qresult"
}
Else {
LogWrite "OldMachine name is not found in DB"
Return
}
}
catch {
Write-error "Error occured when executing sql $SelectQuery"
LogWrite $Error[0]
}
Все прекрасно работает. Но при выполнении Invoke-sqlcmd буква диска меняется на SQLServer: \, что удивительно.
Я запускаю это на машине Windows 2012 R2 и выполняю это на сервере sQL 2012.
Проблема заключается в том, что рабочий каталог меняет наш script сбой, поскольку мы выписываем файл журнала в текущем пути script, когда путь script изменяется на SQL-сервер: \, не удается создать файл журнала и не удается.