Ssis

安裝 Firebird ODBC 驅動程序的問題——驅動程序最終不再找到

  • June 11, 2017

我在使用 ODBC 驅動程序(版本 2.0.4.155)連接到 Firebird DB 的 SSIS 作業時遇到問題。

  • SSIS 包在 Visual Studio 2008 中完美執行,Visual Studio 2008 安裝在 32 位 Windows 7 上(不要問!)
  • 在 SQL Server 2008 64 位中部署到 SSIS 時,包無法執行。錯誤:

未找到數據源名稱且未指定預設驅動程序。

這立即讓我想到可能是 ODBC 驅動程序不匹配的問題,SSIS 正在尋找 32 位驅動程序。所以這就是我所做的:

  • 解除安裝 Firebird ODBC 64 位驅動程序
  • 安裝了 Firebird ODBC 32 位驅動程序
  • 修改了 SQL Server 中的作業計劃,使其以 32-vbit 執行
  • 之後包成功執行 - 但是有一個轉折。

只要我仍然登錄到 SQL 伺服器(我登錄以安裝 Firebird 驅動程序),我就能夠再次執行該包。我什至可以從刪除 SQL Server Management Studio 連接中執行它——但只要我不從伺服器註銷。

如果我從伺服器註銷,則 SSI 作業將不再工作(與以前相同的錯誤)。這使我認為這實際上不是 32/64 位不匹配,但由於權限不足,我從伺服器註銷後可能沒有送出某些系統資料庫或環境變數(即使我本來是管理員該伺服器)。

所以對於我的下一個測試:

  • 我解除安裝了32位驅動
  • 重裝64位驅動
  • 保持登錄到 SQL 伺服器
  • 從遠端 SQL Server Management Studio 一次又一次地執行作業:每次都有效

一旦我從該 SQL 伺服器註銷,該行為再次發生。起初這很難排除故障,因為驅動器安裝時不會引發任何錯誤,而且它甚至可以在開始時工作。

但我現在確信這與權限有關。有什麼想法我可能會錯過嗎?

這裡的問題是我必須創建一個系統 DSN,這實際上很奇怪,因為 SSIS 作業計劃使用使用者 DSN 所在的帳戶執行,並且只要我使用該帳戶登錄到伺服器,它就可以工作帳戶。無論如何,我太累了,無法理解為什麼使用者 DSN 不起作用。所以我決定改用系統DSN。

並不是我反對系統 DSN(相反!),但設置此使用者 DSN 的不是我,而且我不知道用於創建系統 DSN 的憑據的密碼。所以我必須有點創意。

我必須使用系統資料庫編輯器和記事本將使用者 DSN 轉換為系統 DSN。這是我的做法:

  1. 使用具有要轉換為系統 DSN 的使用者 DSN 條目的使用者登錄
  2. 打開系統資料庫編輯器並導航到 HKEY_LOCAL_CURRENT\SOFTWARE\Microsoft\ODBC\
  3. 右鍵點擊 ODBC.INI 並選擇導出以將其保存為桌面上的文件(或您喜歡的任何其他位置)
  4. 使用記事本等文本編輯器打開 .reg 文件
  5. 將文本 HKEY_CURRENT_USER 替換為 HKEY_LOCAL_MACHINE。保存您的更改
  6. 點兩下 .reg 文件並繼續將其導入系統資料庫。

上面概述的過程基本上將所有使用者 DSN 條目複製為系統 DSN 條目。如果您只複製一個條目,則需要刪除它們在 .\ODBC.INI 下的對應鍵以及它們在 .\ODBC.INI\ODBC 數據源中的對應條目。

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