[英]Restore MS SQL Server Database using powershell and task scheduler
[英]SQL Server backup using powershell in Task scheduler
我正在使用 PowerShell 備份 SQL 服務器數據庫並使用 Windows 任務計划程序來安排腳本
測試
手動運行腳本,它有效。
SQL 服務器備份文件 ( test.bak
) 和測試文件 ( HelloWorld.txt
) 均已創建。
通過 Windows 任務調度程序運行,只創建了HelloWorld.txt
,沒有創建 SQL 服務器備份文件。
至少如此;
問題
為什么從 Windows 任務計划程序運行時沒有創建 SQL SErver 備份文件?
這是我的SQLbackup.ps1
文件:
$credential = import-clixml -path c:\pp\test\sqlcred.xml
Backup-SqlDatabase -ServerInstance Server264\SUPPORT2K19 -Database PPTest -BackupAction Database -BackupFile "C:\PP\Test\Test.bak" -Credential $credential
Set-Content -Path "C:\PP\Test\HelloWorld.txt" -Value "Hello World"
任務計划程序設置為:
在操作選項卡中:
-executionpolicy bypass -file C:\PP\Test\sqlbackup.ps1
為什么沒有創建 SQL 服務器備份文件的任何建議?
我認為 cmdlet Backup-SqlDatabase
會產生錯誤,而您沒有捕獲該錯誤的機制。
嘗試實現try/catch
來捕獲錯誤,然后您可以使用該信息執行您想要的操作,例如:
$credential = import-clixml -path c:\pp\test\sqlcred.xml
try {
Backup-SqlDatabase -ServerInstance Server264\SUPPORT2K19 -Database PPTest -BackupAction Database -BackupFile "C:\PP\Test\Test.bak" -Credential $credential -ErrorAction Stop
}
catch {
Set-Content -Path "C:\PP\Test\Error.txt" -Value "$_"
}
Set-Content -Path "C:\PP\Test\HelloWorld.txt" -Value "Hello World"
這將捕獲潛在的error
並將其寫入Error.txt
文件,與HelloWorld.txt
相同。
重要的部分是Try/Catch
僅捕獲終止錯誤,因此我們在 cmdlet 的末尾添加-ErrorAction Stop
以使任何錯誤終止,以便我們可以在catch
腳本塊中執行腳本。
您可以在 Microsoft 文檔中閱讀更多相關信息: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_try_catch_finally?view=powershell-7.2
PS 該文檔適用於 Powershell 7.2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.