簡體   English   中英

SQL Server代理作業無法在代理帳戶下運行CmdExec步驟

[英]SQL Server Agent Job fails to run CmdExec step under proxy account

我當前正在嘗試運行一個SQL Server代理作業,該作業在特定的域帳戶下執行CmdExec作業步驟。 我們已經設置了作業,以便在部署時設置以下內容:

  1. 使用正確的密碼創建憑據DOMAIN\\CustomUser
  2. 創建一個SQL Server代理代理DOMAIN\\CustomUser
  3. 授予對DOMAIN\\CustomUser代理對Operating System (CmdExec)子系統的訪問權限
  4. 創建sa擁有的SQL Server代理作業
  5. DOMAIN\\CustomUser代理帳戶下運行的上述作業中的CmdExec作業步驟

作業已在兩個單獨的環境中以相同的方式部署(所有帳戶的相同參數,密碼,作業名稱等),並且在三台計算機上具有不同的結果。

  1. SQL Server 2008 R2 SP2 + SQL Server代理服務作為LocalSystem運行
    • 在所有計算機上,此作業均在此環境下正確運行
  2. 作為DOMAIN\\ServiceAccount運行的SQL Server 2012 SP2 + SQL Server代理服務。 DOMAIN\\ServiceAccount是SQL Server中的sysadmin ,位於計算機上的Adminstrators組中。
    • 在此環境中,該作業使兩台計算機上的兩個兩個不同的錯誤消息失敗

環境#2中的一台計算機上,我們收到以下錯誤:

以用戶身份執行:DOMAIN \\ CustomUser。 無法為作業0x657C6E86850D684D9238816B8548D63B的步驟1創建該過程(原因:客戶端未擁有所需的特權)。 該步驟失敗。

環境#2中的另一台計算機上,我們收到以下錯誤:

無法開始執行步驟1(原因:驗證代理DOMAIN \\ CustomUser時出錯,系統錯誤:用戶名或密碼不正確。)。 該步驟失敗。

我嘗試遵循此處的指導,該指導建議您需要使用SQL Server配置管理器來設置服務帳戶。 雖然沒有運氣。

免責聲明:沒有配置機器的環境#2,所以我不知道如果我的前輩做了一些不同,當他們配置的機器。

為什么我會得到三個單獨的結果(兩個失敗,一個成功)? 在我們所有的機器上,腳本化作業都是逐位(缺少作業ID)相同的,但是它完全無法在環境#2中運行。

工作流程中某處是否有局部變量在調用? 如果是這樣,則可能是每個MS KB2968540的Windows 6.2“功能”。 Server 2008按設計工作; Server 2012轉發已損壞。 建議的解決方法是命中注定。 如果這是您的問題,運行ProcMon跟蹤應該可以讓您查看在不正確的上下文中正在運行的內容。

我們在工廠中要做的是將代理作業切換到計划的任務,並從批處理文件中顯式聲明USERPROFILE和APPDATA變量。 將它們設置在代理作業中會很好,但是運行CMDEXEC作業的代理似乎處理的內容與CMD不同。

MS在Server 2012中破壞了許多向后兼容性; 祝好運。

任務計划程序可用於計划和執行作業(運行SSIS程序包)。 將文件保存在桌面上的.bat中,並使用任務計划程序計划作業以自動運行:

  1. 創建SSIS包
  2. 將程序包保存在映射的服務器(或驅動器)上
  3. 復制路徑"D:\\ARMSTEE\\SSISPACKAGE\\GiganticWeeklyUpload_1.dtsx"
  4. 將路徑添加到dtexec /f "D:\\ARMSTEE\\SSISPACKAGE\\GiganticWeeklyUpload_1.dtsx"

它更快,更容易做到。 我花了一段時間才找到它,因此贏得了分享。 特別是在有權限問題時,可以使用此功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM