Postgresql

在 Windows 任務計劃程序中從系統使用者執行時,pg_dump 無法創建備份

  • April 17, 2016

我正在嘗試通過 Windows 中的計劃任務執行 pg_dump。我有兩個批處理文件。一個創建任務。另一個執行 pg_dump。即使 pg_dump 與目前使用者一起工作沒有問題,我必須將 pg_dump 作為系統執行,因為我希望它在使用者未登錄的情況下執行。不幸的是,要在使用者註銷時執行任務,您必須在系統使用者中執行它,這對 pg_dump 不起作用。我看不到任何錯誤。它只是創建一個空的備份文件,然後 pg_dump 繼續執行,阻止未來的執行。

我的部分 pg_dump 程式碼如下。

%PG_BIN%pg_dump -h %PG_HOST% -p %PG_PORT% -U %PG_USER% -F c -b -v -f %BACKUP_FILE% %DB%

我創建任務的 Schtaks 程式碼的一部分。

SchTasks /Create /SC MINUTE /mo 30 /RU "SYSTEM" /TN "Database Backup" /TR "%SCRIPT_DIR%backup_db.bat"

我找到了解決這個問題的方法。在第一次將其設置為 SYSTEM 後,我必須以使用者身份執行更改為目前登錄使用者。這將提示使用者輸入密碼。此更改不會刪除**“無論使用者是否登錄都執行”**上的單選選項,並且 pg_dump 與目前使用者一起使用。好消息是,程式碼靜默執行。我在計劃任務創建者批處理腳本下添加的程式碼如下。

SchTasks /Change /TN "Database Backup" /RU "%username%" /RP *

引用自:https://dba.stackexchange.com/questions/135552