
問題
由於 Windows Server 2003 的支援將於 7 月 14 日結束,因此我們將所有排程任務轉移到 Windows 2008 R2 伺服器。
我們使用 Microsoft(MS) Access 2003(mdb) 資料庫來處理各種後端進程,以補充使用者和客戶與我們系統的互動。
MS Access 內部的後端程序之一(導致此問題的原因)是在使用者未登入時拒絕列印。
後端程序填入一個臨時表,稍後用於填入要列印的報表。該報告具有嵌入的查詢、連結的圖像和已儲存的預設印表機。
執行計劃任務的使用者是網域使用者。
我們推測它可能是什麼
會話 0 隔離- Access 有一個非常小的列印窗口,顯示您位於第 X 頁,共 N 頁。我覺得這可能是罪魁禍首,但我們已經嘗試過的一切都無法阻止它。
我們的嘗試
- 在系統設定檔下建立桌面資料夾
- 確保使用者是具有提升權限的本機管理員
- 登入時手動運行它(這有效)
- 建立應用程式的微型版本,用於執行列印作業的小樣本。
- 設定排程任務在使用者登入或未登入時執行。無論如何,MS Access 資料庫中的其他進程仍在運行,並且我們得到未列印的進程的空報告。
目前的解決方法
我們保持網域用戶登入狀態。
答案1
如果您列印到會話印表機,則很容易出現此問題。
HKEY_Current_User\Printers\Connections(會話印表機)
與
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers(本機印表機)
透過網路共用安裝的任何印表機都屬於此類別。請使用安裝有本機 TCP/IP 佇列的印表機重試,該印表機將在系統範圍內可用。
答案2
Elias 您是否查看了排程任務並選取了「無論使用者是否登入都會執行」的方塊?您的問題聽起來像是沒有檢查,所以當任務嘗試運行時它不能。
答案3
聽起來進程運作時沒有偵測到印表機本身。您是否嘗試添加一些調試代碼以輸出到文件並查看它在哪裡被捕獲?我發現 VBA 中掛起的進程不會在事件檢視器中產生太多信息,並且通常需要在程式碼中捕獲更多錯誤。
我已經看到了會話 0 隔離問題並且有解決方法,但我遇到的所有範例都與 Excel 相關。
以下是 Session 0 影響的解釋。
https://msdn.microsoft.com/en-us/library/windows/hardware/dn653293%28v=vs.85%29.aspx
答案4
如果將 UAC 設置為最低設置,情況會有所改善嗎?為此,按一下“開始”,然後按一下“執行” 在執行方塊/提示字元中鍵入msconfig,然後按一下“確定” 按一下“工具”標籤按一下“變更UAC 設定”,然後按一下“啟動” 將滑桿拖曳到底部確定視窗並重新啟動伺服器
您遷移任務時是否重新建立了任務?在 2003 和 2008 之間遷移任務的一個好方法是在 2008 上開啟任務規劃程序,連接到 2003 伺服器,然後匯出任務。然後,您可以將任務規劃程式指向 2008 伺服器並匯入任務。如果任務執行時結果為 0x0,我會說問題出在排程任務本身之外。
能否確認印表機測試頁時印表機是否可以列印?如果您還沒有比較新舊伺服器上的印表機設置,這可能是個好主意。