共用方式為


了解有關 BizTalk Adapter for SQL Server 配接器系結屬性

Microsoft BizTalk Adapter for SQL Server 會顯示數個系結屬性。 藉由設定這些屬性,您可以控制部分配接器的行為。 本節描述 SQL 配接器所公開的系結屬性。 它也會示範如何使用 .NET 程式設計或設定 BizTalk Server 實體埠系結上的屬性來存取它們。

配接器系結屬性

下表顯示依類別分組的 SQL 配接器系結屬性。 類別是指每個系結屬性出現在不同應用程式用來設定配接器(或系結)之對話框中的節點。

XmlStoredProcedureRootNodeName

類別:FOR XML
描述:針對 SELECT 語句中具有 FOR XML 子句的預存程式,指定回應架構的根節點名稱。 此根節點會封裝在執行這類預存程序之後,從 SQL Server 收到的 XML 回應。 您必須將此根節點新增至響應架構,如 使用 BizTalk Server 在 SQL Server 中使用 FOR XML 子句執行預存程式主題中所述。

這很重要

您必須使用 FOR XML 子句執行預存程式時設定這個系結屬性。

.NET 類型:字串

XmlStoredProcedureRootNodeNamespace

類別:FOR XML
描述:針對 SELECT 語句中具有 FOR XML 子句之預存程式的回應架構,指定根節點的目標命名空間。
.NET 類型:字串

CloseTimeout

類別:一般
描述:WCF 連線關閉逾時。 預設為 1 分鐘。
.NET 類型:System.TimeSpan

名稱

類別:一般
描述:只讀值,會傳回 Add Adapter Service Reference Visual Studio 外掛程式所產生的檔名,以保存 WCF 用戶端類別。 [新增配接器服務參考外掛程式] 會將 “Client” 附加至 Name 屬性的值,以形成檔名。 此屬性的預設值為 「SqlAdapterBinding」;針對此值,產生的檔案將會命名為 「SqlAdapterBindingClient」。。
.NET 類型:字串

OpenTimeout

類別:一般
描述:指定 WCF 連線開啟逾時。 預設為 1 分鐘。

這很重要

SQL 配接器一律會使用 OpenTimeout 在開啟 SQL Server 連線時設定連線開啟逾時。 配接器會忽略開啟通訊對象時傳遞的任何逾時 (System.TimeSpan) 參數。 例如,配接器會忽略開啟通道時傳遞的任何逾時參數。

.NET 類型:System.TimeSpan

接收逾時

類別:一般
描述:指定 WCF 訊息接收逾時。 基本上,這表示配接器等候輸入訊息的時間上限。 預設為 10 分鐘。

這很重要

對於輪詢之類的輸入作業,建議將逾時設定為最大可能值,也就是 24.20:31:23.64700000 (24 天)。 搭配 BizTalk Server 使用配接器時,將逾時設定為大型值並不會影響配接器的功能。

.NET 類型:System.TimeSpan

SendTimeout

類別:一般
描述:指定 WCF 訊息傳送逾時。 預設為 1 分鐘。
.NET 類型:System.TimeSpan

EnableBizTalkCompatibilityMode(啟用 BizTalk 相容模式)

類別:BizTalk
描述:指出配接器是否與 BizTalk Server 或 .NET 應用程式搭配使用。

  • 使用 BizTalk Server 中的配接器時(或使用 BizTalk 專案中的配接器在 SQL Server 上產生作業的元數據),您必須一律將 屬性設定為 True。 這可確保針對 System.Data.DataSet 產生的架構格式與 BizTalk Server 相容。 否則,BizTalk 專案將無法編譯。
  • 在 .NET 應用程式中使用來自 Visual Studio 的配接器時,如果您想要使用回應做為 DataSet,則必須將 屬性設定為 False 。 這可確保針對 System.Data.DataSet 產生的架構格式與 WCF DataContractSerializer 相容。

.NET 類型:bool (System.Boolean)

批次大小

類別:緩衝處理
描述:指定 SQL Server 資料庫中數據表或檢視表上多個記錄的插入、更新和刪除作業的批次大小。 預設值為 20。 針對大於一的 BatchSize 值,SQL 配接器會將指定的記錄數目批處理成單一呼叫。 較高的值可能會改善效能,但會影響記憶體耗用量。
.NET 類型:int (System.Int32)

資料塊大小

類別:緩衝處理
描述:指定用於設定<column_name> 作業的緩衝區大小。 預設值為 4194304 個字節。 較高的值可能會改善效能,但會影響記憶體耗用量。

備註

如需有關設定<column_name>操作的更多資訊,請參閱使用SQL配接器進行包含大型數據類型之資料表和檢視表上的作業

.NET 類型:int (System.Int32)

加密

類別:連線
描述:指定 SQL Server 是否使用 SSL 加密來傳輸 SQL Server 與客戶端之間的所有數據。 預設值為 false
.NET 類型:bool (System.Boolean)

MaxConnectionPoolSize

類別:連線 描述:指定特定連接字串連接集區中允許的連線數目上限。 預設值為 100。 這個屬性用於效能微調。

這很重要

您必須明智地設定 MaxConnectionPoolSize 。 如果此值設定得太大,就有可能耗盡可用的連線數目。

.NET 類型:int (System.Int32)

WorkstationId

類別:連線
描述:指定使用 SQL 配接器連線到 SQL Server 資料庫之工作站(用戶端電腦)的唯一標識符。 如果指定,這個系結屬性的值會用於 SqlConnection.ConnectionString 屬性的 工作站標識符 關鍵詞。 如需詳細資訊,請參閱 SqlConnection.ConnectionString 屬性
.NET 類型:字串

啟用效能計數器

類別:診斷
描述:指定是否啟用 WCF LOB 配接器 SDK 性能計數器和 SQL 配接器 LOB 延遲性能計數器。 默認值為 False;性能計數器已停用。 LOB 延遲性能計數器會測量 SQL 配接器在呼叫 SQL Server 資料庫時所花費的總時間。

如需 SQL 配接器性能計數器的詳細資訊,請參閱搭配 SQL 配接器 使用性能計數器
.NET 類型:int (System.Int32)

入境操作類型

類別:入境
描述:指定您要執行 輪詢型別輪詢XML輪詢通知 輸入作業。 預設為 輪詢

如需 PollingTypedPollingXmlPolling 的詳細資訊,請參閱 輪詢支援。 如需 通知的詳細資訊,請參閱 使用 SQL 配接器接收查詢通知的考慮
.NET 類型:列舉

UseDatabaseNameInXsdNamespace

類別:元數據
描述:指定為特定成品產生的 XSD 是否包含資料庫名稱。 將此設定為 True 以包含資料庫名稱。 否則,請將此值設定為 False。 預設值為 false

這在單一應用程式想要在不同資料庫中具有不同元數據的相同具名成品上執行作業時,這非常有用。 如果命名空間中沒有資料庫名稱,產生的元數據將會衝突。 藉由設定這個系結屬性,您可以將資料庫名稱包含在命名空間中,使其成為唯一的。 以下是醒目提示命名空間變更的範例。

UseDatabaseNameInXsdNamespace = False
http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee

UseDatabaseNameInXsdNamespace = True
http://schemas.microsoft.com/Sql/2008/05/TableOp/MyDatabase/dbo/Employee

請注意,當系結屬性設定為 True 時,命名空間中會包含資料庫名稱。

.NET 類型:列舉

AllowIdentityInsert (允許標識插入)

類別:其他
描述:指定配接器是否可以在插入和更新作業期間插入識別數據行的值。 將此屬性設定為 True ,以插入或更新識別資料行的值。 否則,請將此值設定為 False (預設值)。

備註

將此屬性設定為 True 會使用 SET IDENTITY_INSERT <table_name> ON轉譯為配接器。 如需詳細資訊,請參閱 SET IDENTITY_INSERT (Transact-SQL)

使用這個系結屬性時,您必須考慮下列幾點:

  • 配接器不會驗證您為識別數據行傳遞的值。 例如,如果數據表的識別數據行已將 「Identity Seed」 設定為 100 且 「Identity Increment」 設定為 1,而配接器用戶端會針對識別數據行傳遞值 95,則配接器只會將此值傳遞至 SQL Server。
  • 即使您將 AllowIdentityInsert 設定為 True,配接器用戶端也不會強制在要求訊息中指定識別數據行的值。 如果識別數據行有值,配接器會將它傳遞給 SQL Server。 如果值不存在,SQL Server 會根據識別數據行的規格插入值。

.NET 類型:bool (System.Boolean)

通知聲明

類別:通知(輸入)
描述:指定用來註冊 SQL Server 通知的 SQL 語句(SELECT 或 EXEC <預存程式>)。 您必須在 SQL 語句中特別輸入欄位名稱,如下列 SELECT 語句所示:

SELECT Employee_ID,Designation FROM dbo.Employee WHERE Status=0

備註

您必須指定資料庫物件名稱以及架構名稱。 例如: dbo.Employee

只有在指定 SQL 語句的結果集變更時,配接器才會從 SQL Server 取得通知訊息。

.NET 類型:字串

當監聽者啟動時通知

類別:通知(輸入)
描述:指定當接聽程序啟動時,配接器是否會傳送通知訊息給用戶端,以告知接收位置正在運行。 預設值為 True

您收到的通知訊息如下所示:

<?xml version="1.0" encoding="utf-8" ?>
 <Notification xmlns="http://schemas.microsoft.com/Sql/2008/05/Notification/">
   <Info>ListenerStarted</Info>
    <Source>SqlBinding</Source>
    <Type>Startup</Type>
  </Notification>

.NET 類型:bool (System.Boolean)

資料可用聲明

類別:輪詢(輸入)
描述:指定執行的 SQL 語句,以判斷是否有任何數據可用於輪詢 SQL Server 資料庫中的特定數據表。 指定的語句必須傳回包含數據列和數據行的結果集。 結果集第一個單元格中的值會指出配接器是否執行針對 PollingStatement 系結屬性指定的SQL語句。 如果結果的第一個單元格包含正值,配接器就會執行輪詢語句。

以下是您可以為此系結屬性指定之一些有效語句的範例:

  • 如果您要指定 SELECT 語句:

    SELECT COUNT(*) from <table_name>

  • 如果您要指定預存程式,預存程式可能會定義為:

    CREATE PROCEDURE <procedure_name>
    AS BEGIN
    SELECT COUNT(*) FROM <table_name>
    END
    GO
    

    CREATE PROCEDURE <procedure_name>
    AS BEGIN
    DECLARE @count int
    SELECT @count = SELECT(*) FROM <table_name>
    SELECT @count
    END
    GO
    

如果您使用預存程式,您會將 PolledDataAvailableStatement 指定為 EXEC <procedure_name>

這很重要

您為這個繫結屬性指定的語句不會在由轉接器啟動的交易內執行,而且在執行實際輪詢語句之前可能會被呼叫多次(即使執行該語句表示有可供輪詢的資料列)。

.NET 類型:字串

輪詢間隔(以秒為單位)

類別:輪詢(輸入)
描述:指定 SQL 配接器以秒為單位執行 PolledDataAvailableStatement 系結屬性指定的語句的間隔。 預設值為30秒。 輪詢間隔會決定連續輪詢之間的時間間隔。 如果語句是在指定的間隔內執行,配接器會在間隔的剩餘時間內處於非使用中狀態。
.NET 類型:int (System.Int32)

輪詢語句

類別:輪詢(輸入)
描述:指定要查詢 SQL Server 資料庫資料表的 SQL 語句。 您可以為輪詢語句指定簡單的 SELECT 語句或預存程式。 預設值為 null。 您必須指定 PollingStatement 的值,才能啟用輪詢。 只有在有數據可供輪詢時,才會執行輪詢語句,這是 由 PolledDataAvailableStatement 系結 屬性所決定。

您可以指定以分號分隔的任意數目 SQL 語句。 您可以使用輪詢語句來讀取或更新 SQL Server 資料庫數據表中的數據。 SQL 配接器會在一個交易內執行輪詢語句。 當配接器與 BizTalk Server 搭配使用時,會使用相同的交易將訊息從 SQL Server 提交至 BizTalk 消息框。

.NET 類型:字串

輪詢當找到資料時

類別:輪詢(輸入)
描述:指定如果正在輪詢的數據表中有數據可用,SQL 配接器是否忽略輪詢間隔,並持續執行針對 PolledDataAvailableStatement 系結 屬性指定的 SQL 語句。 如果數據表中沒有可用的數據,配接器會還原為在指定的輪詢間隔執行 SQL 語句。 預設值為 false

假設輪詢間隔設定為 60 秒,且針對 PolledDataAvailableStatement 指定的語句會傳回可供輪詢的數據。 配接器接著會執行針對 PollingStatement系結 屬性指定的語句。 假設配接器只需要 10 秒來執行輪詢語句,它現在必須等候 50 秒,然後再再次執行 PolledDataAvailableStatement ,然後接著執行輪詢語句。 相反地,若要將效能優化,您可以將 PollWhileDataFound 系結屬性設定為 true ,讓配接器可以在上一個輪詢周期結束時立即開始執行下一個輪詢迴圈。

.NET 類型:bool (System.Boolean)

UseAmbientTransaction

類別:交易
描述:指定 SQL 配接器是否使用呼叫端所提供的交易內容來執行作業。 默認值為 true,這表示配接器一律會在交易式內容中執行作業。 如果有其他參與交易的資源,而且 SQL Server 也會聯結交易,交易就會提升為 MSDTC 交易。

不過,在某些情況下,您不希望適配器在交易環境中執行作業。 例如:

  • 在 SQL Server 資料庫上執行簡單的 Select 作業時
  • 同時指定執行 Select 作業的輪詢語句,而且不涉及透過 Delete 語句或叫用預存程式對數據表進行任何變更。

這兩個作業都不會對資料庫數據表進行任何更新,因此,將這些作業提升為使用 MSDTC 交易可能是效能額外負荷。 在這種情況下,您可以將系結屬性設定為 false ,讓 SQL 配接器不會在交易式內容中執行作業。

備註

  • UseAmbientTransaction 設定為 False 時,不會呼叫 PolledDataAvailableStatement 。 相反地,配接器會直接呼叫 PollingStatement
  • 只有在未對資料庫進行變更的作業時,才建議不要在交易內容中執行作業。 對於更新資料庫中數據的作業,建議將系結屬性設定為 true。 否則,視您執行輸入或輸出作業而定,您可能會遇到訊息遺失或重複的訊息。

.NET 類型:bool (System.Boolean)

如何設定 SQL Server 系結屬性?

當您指定與 SQL Server 的連線時,您可以設定 SQL Server 系結屬性。 若要了解如何在下列情況下設定系結屬性:

  • 使用取用配接器服務的 BizTalk 專案附加元件或新增配接器服務參考的 Visual Studio 附加元件,如需詳細資訊,請參閱搭配 SQL 配接器使用 Windows 驗證連線到 SQL Server

    這很重要

    使用 Consume Adapter Service 附加元件或 Add Adapter Service Reference 外掛程式時,若您未為字串類型的系結屬性指定值,且其預設值為 null,則該系結屬性將無法出現在系結檔案(XML 檔案)或 app.config 檔案中。 如有必要,您必須在系結檔案或 app.config 檔案中手動新增系結屬性及其值。

  • 在 BizTalk Server 解決方案中設定傳送埠或接收埠(位置),請參閱 手動設定 SQL 配接器的實體埠系結

  • 在程式設計解決方案中使用 WCF 通道模型,請參閱 使用 SQL 配接器建立通道

  • 在程式設計解決方案中使用 WCF 服務模型,請參閱 設定 SQL 配接器的用戶端系結

另請參閱

開發 SQL 應用程式