匯出 (0) 列印
全部展開

ALTER FEDERATION (Azure SQL Database)

更新日期: 2014年4月

這個主題已過時。您可以在 Transact-SQL 參考 (資料庫引擎) 中找到最新版本。 請參閱 ALTER FEDERATION

Important重要事項
目前的同盟實作將汰換 Web 和 Business 服務層。請考慮部署自訂的分區化解決方案以最大化擴充性、靈活性及效能。如需有關自訂分區化的詳細資訊,請參閱向外延展 Azure SQL Database

修改同盟內的資料散發。

語法慣例 (Azure SQL Database)


ALTER FEDERATION federation_name
{
    SPLIT AT (distribution_name = boundary_value)
    | DROP AT ([LOW|HIGH] distribution_name = boundary_value)
}[;]

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

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

Boundary_value 是重新分割作業的分割點。界限值對於同盟的同盟金鑰所指定的資料類型而言應該是有效的值。如果是 SPLIT 的情況,這個值會成為此作業中建立之新同盟成員的 range_low 和 range_high。

SPLIT AT (distribution_name = boundary_value)
將同盟成員中目前包含界限值的資料移到兩個新的同盟成員中。同盟資料表中同盟金鑰例項 < boundary_value 的所有資料列都會複製到其中一個新的目的地同盟成員中。>= 界限值的例項則會複製到其他新的同盟成員中。所有其他物件,例如物件上定義的參考資料表、預存程序、函數、使用者和權限,都會複製到新同盟成員中。

DROP AT ([LOW|HIGH] distribution_name = boundary_value)
卸除同盟成員,並延伸相鄰同盟成員的範圍,以涵蓋 DROP 作業所建立的間隙。這個作業會同時影響所卸除的同盟成員以及將會延伸來涵蓋間隙的相鄰同盟成員。LOW 或 HIGH 決定將在給定同盟 boundary_value 卸除的同盟成員。界限值必須對應到同盟中的現有資料分割值 (同盟成員的 range_high 或 range_low)。

在 DROP 作業期間,受影響的同盟成員之間不會進行任何結構描述比較。DROP 不需要實體資料複本,它會重設連接,並變更受影響之同盟成員的 db_name()。

DROP 是非同步作業。

SPLIT 作業的屬性

  • ALTER FEDERATION … SPLIT 陳述式必須是批次內的唯一陳述式,而且不得為外部交易的一部分。

  • 只有當連接到同盟根資料庫時,才可執行 ALTER FEDERATION … SPLIT 陳述式。

  • 一次只能有一個 DROP 或 SPLIT 命令在受影響的同盟成員上處於使用中狀態。只要是對同盟的不同成員操作,同時可有許多作用中的 DROP 和 SPLIT 命令。

  • 所有目的地同盟成員 (由於 SLIPT 作業而建立的同盟成員) 都會繼承來源同盟成員的 MAXSIZE 和 EDITION 屬性。

  • SPLIT 作業是不可部分完成的作業。必須成功建立及同步處理所有目的地成員,才能完成 SPLIT。

  • SPLIT 作業是非同步作業。

    當 SPLIT 執行時,

    • 所有標準 (非同盟) 物件、結構描述和系統中繼資料都會從正在進行 SPLIT 作業的來源同盟成員複製到目的地同盟成員。此清單包含使用者、角色、物件權限、sproc、檢視表、同盟或參考資料表、索引等。唯一的例外是標示為要重新計算的散發統計資料。系統會維護標示 NORECOMPUTE 的統計資料,而且在重新分割作業之後不會在同盟資料表上重新計算這些統計資料。

    • 所有同盟資料表結構描述都會從正在進行 SPLIT 作業的來源同盟成員複製到目的地同盟成員。

    • 同盟資料表中的使用者資料會根據界限值移到目的地同盟成員。

    • 所有參考資料表中的使用者資料都會複製並移到目的地同盟成員。

    當 SPLIT 完成時,

    • 新的同盟成員會在對應的目的地同盟成員中包含所有最新的資料。

    • 系統會更新 sys.federation_members 檢視表來包含新的目的地同盟成員以及其範圍值。來源同盟成員會遭到卸除,而且已不存在於 sys.databases 或 sys.federation_members 中。

    • 來源同盟成員會中斷所有現有的連接。重試時,新連接會路由傳送至新同盟成員。

DROP 作業的屬性

  • ALTER FEDERATION … DROP 陳述式必須是批次內的唯一陳述式,而且不得為外部交易的一部分。

  • 只有當連接到同盟根資料庫時,才可執行 ALTER FEDERATION … DROP 陳述式。

  • 指定的界限值必須對應到同盟中的現有範圍界限 (range_high、range_low)。

  • DROP 作業是非同步作業。

    當 DROP 作業啟動時,LOW 或 HIGH 選項和指定的界限值決定將要卸除的同盟成員。相鄰同盟成員的範圍會延伸,涵蓋已卸除之同盟成員的範圍。

    當 DROP 正在執行時,不會執行任何資料傳輸,也不會進行任何結構描述比較作業。

    當 DROP 完成時,

    • 其餘的同盟成員會重新命名。

    • sys.federation_members 資料表不再包含已卸除的同盟成員,而且其餘的同盟成員具有更新的範圍。

    • 同盟成員會中斷所有現有的連接。卸除的同盟成員不再接受連接。其餘的同盟成員會中斷所有現有的連接。

同盟作業的安全性考量

對於 CREATE、ALTER 和 DROP 同盟作業而言,您必須連接到同盟根資料庫,而且必須是伺服器上 dbmanager 角色的成員。您也必須是資料庫之 dbo 群組的成員。

SPLIT 和 DROP 陳述式要求您必須擁有來源同盟成員以及您所連接之伺服器的 CREATE 和 DROP DATABASE 權限。在 Microsoft Azure SQL Database 中,這受限於 dbmanager 伺服器角色的成員。來源同盟成員的擁有者會成為目的地同盟成員的擁有者,不論執行作業的使用者帳戶為何。

同時執行 SPLIT 和 DROP 作業

只要沒有任何來源或目的地同盟成員重疊,便允許同時執行多個 DROP 或 SPLIT 作業。

  • DROP AT (LOW distribution_name = boundary_value)

    將同盟成員卸除到界限值的 LOW 值,並將同盟成員擴充到界限值的 HIGH 值。例如,假設有同盟 (fed1) 包含三個同盟成員,涵蓋了 0,100 (db1)、100,200 (db2) 和 200,300 (db3),則發出 ALTER FEDERATION fed1 DROP AT (LOW customer_id=200) 將會執行以下作業:

    1. DROP db2 及 100,200 之間的所有資料

    2. 將 db3 重新命名為 db4。Db4 的 Dbid 維持不變。

    3. Db4 現在涵蓋的範圍為 100,300

  • DROP AT (HIGH distribution_name = boundary_value)

    將同盟成員卸除到界限值的 HIGH 值,並將同盟成員擴充到界限值的 LOW 值。例如,假設有同盟 (fed1) 包含三個同盟成員,涵蓋了 0,100 (db1)、100,200 (db2) 和 200,300 (db3),則發出 ALTER FEDERATION fed1 DROP AT (HIGH customer_id=200) 將會執行以下作業:

    1. DROP db3 及 200,300 之間的所有資料

    2. 將 db2 重新命名為 db4。Db4 的 Dbid 維持與 db2 相同。

    3. Db4 現在涵蓋的範圍為 100,300

顯示:
© 2014 Microsoft