Sql-Server-2012

SSIS 2012 項目連接管理器不會在 SSMS 2012 中公開用於配置的 ServerName 屬性

  • August 9, 2016

我們部署了一個帶有兩個 ADO.Net 項目連接管理器的 SSIS 2012 項目。(項目中有五個包。)

該項目有一個相關的環境,其中一個包含伺服器名稱的變數。我想將變數映射到項目連接管理器 ServerName 屬性。

當我在 SSMS 2012 中右鍵點擊 SSIS 項目節點,啟動配置對話框時,我可以找到連接管理器,並突出顯示它以查看其屬性,但 ServerName 在屬性列表中不可見。

通常,ServerName 屬性列在 RetainSameConnection 屬性下。它在同一項目中的其他項目連接管理器上可見。

為什麼要隱藏這個屬性,只為一個連接管理器?

我通過使用 Visual Studio 2012 打開項目找到了答案。

在 Visual Studio 中打開 SSIS 項目,然後在“解決方案資源管理器”窗格中選擇 .conmgr 文件。使用上下文菜單並選擇“查看程式碼”菜單選項。這將顯示連接管理器文件中的 XML。

在 XML 中,有這個標籤:

<DTS:PropertyExpression
   DTS:Name="ServerName">@[$Project::my_server_name]</DTS:PropertyExpression>

ServerName 屬性是通過表達式設置的!

通過解決方案資源管理器樹本身不容易辨別這一事實。選擇 conmgr 文件後,“屬性”窗格僅顯示“文件名”和“完整路徑”屬性。

當您打開使用連接管理器的包並在包編輯器窗格中選擇該連接管理器時,屬性窗格會顯示許多其他屬性,包括表達式。僅當已設置 ServerName 屬性時,它才會在表達式列表中可見。

有兩種方法可以解決此問題:

  1. 在 Visual Studio 項目中,打開一個包。從包編輯器窗格中選擇連接管理器,然後從屬性窗格中刪除屬性表達式。
  2. 使用文本編輯器從 .conmgr 文件中刪除 PropertyExpression 標記。

無論哪種方式,一旦連接管理器定義文件中的表達式不再設置 ServerName 屬性,它就會在 SSMS 2012 的“配置”對話框中作為可配置參數公開。

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