CREATE FEDERATION (Azure SQL Database)

在 Azure SQL Database 中建立新的同盟。

重要事項重要事項

目前的同盟實作將會隨著 Web 和 Business 的服務層停用。請考慮部署自訂分區解決方案,讓延展性、彈性和效能最大化。如需有關自訂分區的詳細資訊,請參閱<向外擴充 Azure SQL Database>。

適用於:Azure SQL Database.

語法

CREATE FEDERATION
    federation_name { <federation_distribution_scheme> }

<federation_distribution_scheme> ::= 
    <federation_distribution>

<federation_distribution> ::=
     ( distribution_name <data_type> RANGE )

<data_type> ::= 
     [system_type_name . ] type_name  

引數

  • federation_name
    要建立的同盟名稱。 此名稱在 內必須是唯一的,而且必須符合識別碼的規則且為 sysname 類型。

  • distribution_name
    同盟金鑰的名稱。 此名稱是用來參考同盟索引鍵的識別碼,而且在使用與同盟相關的陳述式 (例如 CREATE TABLE … FEDERATED ON(...) 或 USE FEDERATION) 時便會參考此名稱。 Distribution_name 必須符合識別碼的規則,而且屬於 sysname 類型。

  • type_name
    同盟金鑰類型的類型名稱。 類型必須屬於 int、bigint、uniqueidentifier 或 varbinary(n) 類型,其中 n 的最大值為 900。

  • RANGE
    資料分割類型。 只支援 RANGE 資料分割。

備註

同盟物件允許向外擴充資料表集合。 同盟包含給定資料表集合的整個資料集,而且會定義用於散發資料的散發原則與資料類型。

同盟可以在任何資料庫中建立,而且資料庫中可以有許多同盟。 每一個同盟都代表個別資料表集合,例如「所有客戶資料」或「所有訂單資料」,而且每一個同盟成員通常會包含完整資料集的某個子集。 在單一同盟成員的特殊案例中,單一成員可以包含完整的資料表集合。

當建立同盟時,也會針對指定的資料類型建立涵蓋完整範圍的第一個成員。 這個同盟成員會在 sys.databases 中被視為 master 資料庫的一般資料庫。 也可以在使用者資料庫中看到它,該資料庫包含透過 sys.federation_members 系統檢視表的同盟。 成員資料庫名稱是隨機產生的。

有了範圍散發,range_low 和 range_high 會代表同盟成員的界限值。 對於同盟成員而言,range_low 會設定為給定成員內同盟金鑰所允許的最小值,而 range_high 則會設定為給定成員內同盟金鑰所允許的最大值 +1。 在單一同盟成員的特殊案例中,range_low 代表同盟金鑰資料類型之定義域的最小值,range_high 為 NULL 則表示最大值 + 1。 範圍的涵蓋範圍內不能有間隙,範圍中也不能有不存在的值。 同盟成員會涵蓋範圍的每一個有效值。 同盟金鑰資料類型是用來指定允許之值的定義域。 範圍中包含 range_low 值,但是會排除 range_high。 例如,如果同盟成員的 range_low 為 100 而 range_high 為 200,則 100 的值會包含在同盟中,但是 200 的值則不會。 包含範圍之最大值的同盟成員會包含同盟金鑰資料類型之定義域的最大值,而且會將 NULL 報告為 range_high 值。

重要事項重要事項

CREATE FEDERATION 陳述式必須是批次內的唯一陳述式,而且不得為外部交易的一部分。如果有外部交易存在,則會傳回錯誤 226。