簡體   English   中英

SSIS package 在由 sql 作業代理運行時失敗

[英]SSIS package fails when runs by sql job agent

我在我的 etl 進程中運行 SSIS 包時遇到了麻煩。

有一個表格,其中包含不同類型的 etl 步驟。 即存儲過程步驟,cmd(復制-移動文件)步驟,發送郵件,SSIS 步驟。

主存儲過程根據步驟類型運行這些步驟並記錄開始-結束時間、錯誤等。這個主存儲過程由 sql 服務器作業觸發。

當我安排這項工作時,SSIS 步驟出現以下錯誤;

錯誤:SSIS 錯誤代碼 DTS_E_OLEDBERROR。 發生 OLE DB 錯誤。 錯誤代碼:0x80040E4D。 OLE DB 記錄可用。 來源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80040E4D 描述:“用戶 'server\user$' 登錄失敗。”。

然而,當我手動運行這個主程序時(使用我的 windows 用戶登錄)它運行成功。

我用代理帳戶檢查了這個運行,它對我不起作用。 因為在 sql 服務器作業中,我運行我的主要存儲過程而不是 SSIS package。

代理賬戶參考鏈接; https://www.mssqltips.com/sqlservertip/2163/running-a-ssis-package-from-sql-server-agent-using-a-proxy-account/

只要您與數據庫的連接有效,它就應該工作。 錯誤消息告訴您server\user$不是有效的登錄名。

如果 SSIS Package 正在使用用戶名和密碼(SQL 用戶)連接到數據庫,那么它應該直接訪問並設置您的登錄名和駐留數據庫你接下來運行它應該能夠成功執行proc的作業。

If instead the SSIS Package is connecting with Windows Authentication, then you'll need to use a Proxy that specifies a Credential that references a Windows / Active Directory account with database access. 在 SSMS 中:

  1. 服務器 >> 安全 >> 憑據
    • 創建一個新的憑證
    • 給它一個名字
    • 指定一個有權執行您的過程的 windows 帳戶
  2. 服務器 >> SQL 服務器代理 >> 代理 >> SSIS Package 執行
    • 創建一個新代理
    • select 您剛剛創建的憑證
    • Select“SQL Server 集成服務包”子系統
  3. 服務器 >> SQL 服務器代理 >> 工作 >> 您的工作 >> SSIS 工作步驟
    • 在“運行方式”字段中,選擇您剛剛創建的代理

現在,當您開始工作時,您的 SSIS package 應該使用 windows 帳戶連接到數據庫,該帳戶應該能夠成功執行步驟 1 中指定的存儲過程。

你的 package 的 SSIS 有密碼嗎? 如果沒有,請為其設置密碼。然后編輯您的工作並在那里輸入密碼。

如果您的 SSIS package 中有密碼,請確保將 ProtectionLevel 設置為“EncryptSensitiveWithPassword”。 如果您使用“EncryptSensitiveWithUserKey”,那么您將是唯一可以運行它的用戶。

暫無
暫無

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

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