簡體   English   中英

在服務器之間復制文件時出現 SSIS 文件系統任務錯誤

[英]SSIS File System Task Error while copying files between servers

我可以在兩台服務器之間復制文件,比如手動服務器 A 和服務器 B,我對任一側的文件夾都有權限。

我正在使用文件系統任務來復制文件。

當我的源和目標在服務器中時,包在 Visual Studio 和 SSISDB 中工作正常。

當我的源和目標位於不同的服務器中時,包在 Visual Studio 中工作正常,但包在 SSISDB 中失敗。 它說訪問被拒絕。 我的帳戶映射到 SSISDB。

解決這個問題的任何想法。

該包使用 SQL Server 代理作業運行良好。 該作業通過代理帳戶運行。

我們可以通過任何方式將包配置為通過代理帳戶運行。

錯誤截圖

在此處輸入圖片說明

首先@Nick.McDermaid 在評論中提供了一個非常有用的鏈接,以了解有關Integration Services Catalog 使用哪些用戶憑據來執行包的更多信息?

建議的解決方案

經過搜索有很多問題可能會導致此問題,因此我將提供許多可以解決您問題的解決方案。

運行包 SSISDB 時

1. SQL Server 賬戶權限

在指定路徑上為您登錄的帳戶添加讀寫權限

2.為Network賬號添加windows身份驗證

您可以為網絡帳戶添加 Windows 身份驗證登錄(在 sql server 代理中用作代理)並使用它運行包。

從 SQL 代理運行包時

這不是您的情況,但這些信息可能會有所幫助

1. SQL Server 賬戶權限

為指定路徑上的以下帳戶添加讀寫權限:

  • NT SERVICE\\SQLSERVERAGENT
  • NT SERVICE\\MSSQLSERVER

2. 設置代理

您可以為 SSIS 包設置代理並使用該代理帳戶運行作業。

您可以參考以下鏈接之一以了解更多信息:

3. 將網絡驅動器映射到 SQL Server 實例

一些文章建議映射您在 SQL Server(而不是操作系統)上使用的網絡驅動器。您可以參考以下鏈接之一以了解更多信息:

4. 添加系統管理員角色

將 SysAdmin 角色添加到以下帳戶:

  • NT SERVICE\\SQLSERVERAGENT
  • NT SERVICE\\MSSQLSERVER

其他鏈接有類似問題

您是否查看過域帳戶對 MSDB 的權限。 我會遵循這些步驟。 我有類似的問題

1)在服務器中部署包(正如您已經完成的那樣)

2) 確保包已加載並在 SSISDB 下的集成服務目錄中可用

3)重新部署項目並嘗試。

如果這些都很好,仍然在 SSISDB 中打包失敗,我會嘗試使用 CMD(DTEXUI/文件/“包路徑”)的 Windows 調度程序任務。 如果談論 Windows 調度程序無關緊要,請道歉。

前段時間我遇到了類似的問題:在加載文件之前,我必須將文件從服務器復制到執行 SSIS 的服務器。

如果包被配置為只使用本地目錄,它每次都能工作。 如果我手動啟動它,它可以在不同的機器上工作。 但是當涉及到 SQL Agent + 不同機器時,它失敗了。

通過在 Visual Studio 中抓取 SQL 日志和一些腳本,我認為這是本地和 AD 帳戶的問題。

我通過以下方式解決了這個問題:

  1. 創建一個非交互式用戶帳戶,我在 SSIS 機器上授予了足夠的權限(SQL Server 上的系統管理員或多或少,服務器上的文件夾訪問權限很少......適合您的需要)
  2. 授予此帳戶訪問其他服務器文件夾的權限(通過 ACL)
  3. 更新我的 SQL 代理服務以使用這個“合法”的 AD 帳戶
  4. 完畢 !

近一年以來,這每天都在工作,沒有任何問題。

發布的答案和評論中有很多猜測和紅鯡魚。 它與 SQL 代理代理、映射驅動器、MSDB 或系統管理員無關。 正如最終從您的問題中收集到的那樣,SQL Agent 中的執行很好,只是當您通過右鍵單擊 Integration Services 目錄以交互方式運行它時才會出現問題。

您問題的最后一部分表明根本原因在這里被理解:

我們可以通過任何方式將包配置為通過代理帳戶運行。

交互式用戶(在目錄上單擊鼠標右鍵)沒有權限,您需要一種方法來作為具有權限的不同用戶從目錄中運行。

只是為了確認:如果您在 SSIS 日志中單擊查看上下文,它將向您顯示它以哪個用戶身份運行,這與 SQL 代理的成功包執行不同。

我仔細研究了目錄中的執行和配置菜單以及create_execution sp,我沒有看到任何以不同用戶身份運行它的方法。

我有兩個建議:

  1. 啟動 SSMS 時使用運行身份並以其他用戶身份運行
  2. 只需將包包裝在 SQL 代理中,它允許您使用其他帳戶來運行包(SQL 代理服務帳戶或代理)

我遇到了類似的錯誤。 嘗試使用文件系統任務將文件從一個文件夾移動到另一個文件夾並收到以下錯誤消息和

解決方案:創建連接管理器以指向源文件位置並創建一個名為“DesVariable”的變量以顯示目標文件路徑(例如)C:\\abc。 在文件系統中,任務屬性設置如下

IsSourcePathVariable: False SourceConnection : SourceFileConnectionManager

IsDestinationPathVariable: True DestinationVariable: DesVariable

然后就通過了

[移動/復制文件-文件系統任務屬性]

文件系統任務屬性

暫無
暫無

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

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