共用方式為


閱讀 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

名稱

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

OpenTimeout

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

重要

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

.NET 類型:System.TimeSpan

ReceiveTimeout

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

重要

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

.NET 類型:System.TimeSpan

SendTimeout

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

EnableBizTalkCompatibilityMode

類別: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)

BatchSize

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

ChunkSize

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

注意

如需設定column_name作業的詳細資訊,請參閱使用 SQL 配接器對包含大型資料類型的資料表和檢視表上的作業。 ><

.NET 類型:int (System.Int32)

Encrypt

類別:連線
描述:指定SQL Server (已安裝有效憑證) 是否針對SQL Server與用戶端之間的資料傳輸使用 SSL 加密。 預設值為 false
.NET 類型:bool (System.Boolean)

MaxConnectionPoolSize

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

重要

您必須謹慎地設定 MaxConnectionPoolSize 。 如果此值設定太大,可能會耗盡可用的連線數目。

.NET 類型:int (System.Int32)

WorkstationId

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

EnablePerformanceCounters

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

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

InboundOperationType

類別:輸入
描述:指定您是否要執行 PollingTypedPollingXmlPollingNotification 輸入作業。 預設值為 輪詢

如需 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)

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

  • 配接器不會驗證您為識別資料行傳遞的值。 例如,如果資料表的識別資料行已將 「身分識別種子」設定為 100 且 「識別遞增」設定為 1,而配接器用戶端會針對識別資料行傳遞一個值,例如 95,配接器只會將此值傳遞至SQL Server。
  • 即使您將 AllowIdentityInsert 設定為 True,配接器用戶端在要求訊息中指定識別資料行的值並不必要。 如果識別資料行有值,配接器會將它傳遞至SQL Server。 如果值不存在,SQL Server會根據識別資料行的規格插入值。

.NET 類型:bool (System.Boolean)

NotificationStatement

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

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

注意

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

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

.NET 類型:字串

NotifyOnListenerStart

類別:通知 (輸入)
描述:指定介面卡是否會在接聽程式啟動時,將通知訊息傳送給配接器用戶端,通知接收位置正在執行。 預設值為 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)

PolledDataAvailableStatement

類別:輪詢 (輸入)
描述:指定執行的 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 類型:字串

PollingIntervalInSeconds

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

PollingStatement

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

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

.NET 類型:字串

PollWhileDataFound

類別:輪詢 (輸入)
描述:指定如果資料表中有可用的資料,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 外掛程式,請參閱使用 Windows 驗證與 SQL 配接器連線到SQL Server

    重要

    使用「取用配接器服務增益集」或「新增配接器服務參考外掛程式」時,如果您未針對字串類型的系結屬性指定值,且其預設值為 null,則系結檔案中將無法使用該系結屬性, (XML 檔案) 或 app.config 檔案。 如有必要,您必須在系結檔或 app.config 檔案中手動新增系結屬性及其值。

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

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

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

另請參閱

開發 SQL 應用程式