銷售: 1-800-867-1380

作法:連接到 Azure SQL Database 中的同盟

更新日期: 2015年1月

本主題描述如何連接到 Azure SQL 資料庫 中的同盟。如需有關連接到 SQL 資料庫 中資料庫的一般考量,請參閱以程式設計方式連接到 Azure SQL Database 的方針

您可以使用 USE FEDERATION (Azure SQL Database) 陳述式來完成同盟資料之連接的建立作業。所有建立的連接都會指向包含同盟的資料庫 (同盟根),然後再將連接路由傳送到適當的同盟成員。路由傳送連接的目標同盟成員是由同盟索引鍵值所決定,這個值會指定成 USE FEDERATION 陳述式的一部分。

Important重要事項
目前的同盟實作將在 Web 和 Business 服務層上停用。請考慮使用 Azure SQL Database 的彈性延展功能,在 Azure SQL Database 上建置分區化、向外延展的解決方案。若您想要嘗試,請參閱開始使用 Azure SQL Database 彈性延展預覽

下列範例是連接到具有同盟之 SQL 資料庫 的主控台應用程式。主控台應用程式會執行下列步驟:

  1. 首先,主控台應用程式會使用 SQLConnectionStringBuilder 物件來建構連接字串。

  2. 然後,主控台應用程式會連接到同盟根,以便擷取並顯示同盟成員資料。

  3. 最後,主控台應用程式會連接到同盟成員,並且計算該同盟成員的資料列。

若要在 Visual Studio 中使用此範例搭配 SQL 資料庫 伺服器,請執行下列步驟:

  1. 開啟 Visual Studio 並且建立新的主控台應用程式。

  2. 將程式檔中的程式碼取代為這個範例中的程式碼。

  3. 取代八個靜態資料成員的值。

  4. 執行程式碼。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace ConnectToFederationConsoleApp
{
    class Program
    {
        private static string federationName = "<ProvideFederationName>";
        private static string distributionName = "<ProvideDistributionName>";
        private static long federationKey = <ProvideAValue>;
        private static string tableName = "<ProvideTableName>";

        static void Main(string[] args)
        {
            SqlConnectionStringBuilder csb = new SqlConnectionStringBuilder();
            csb.DataSource = dataSource;
            csb.InitialCatalog = databaseName;
            csb.Encrypt = true;
            csb.TrustServerCertificate = true;
            csb.UserID = userName;
            csb.Password = password;

            try
            {
                using (SqlConnection connection = new SqlConnection(csb.ToString()))
                {
                    connection.Open();

                    using (SqlCommand command = connection.CreateCommand())
                    {
                        // Route the connection to Federation Root
                        command.CommandText = "USE FEDERATION ROOT WITH RESET";
                        command.ExecuteNonQuery();

                        //Retrieve Federation Root metadata
                        command.CommandText = @"SELECT f.name, fmc.federation_id, fmc.member_id, fmc.range_low, fmc.range_high " +
                                                            "FROM sys.federations f " +
                                                            "JOIN sys.federation_member_distributions fmc " +
                                                            "ON f.federation_id=fmc.federation_id " +
                                                            "ORDER BY fmc.federation_id, fmc.range_low, fmc.range_high";;
                        using (SqlDataReader reader = command.ExecuteReader())
                        {
                            Console.WriteLine("name\t\tfederation_id\tmember_id\trange_low\trange_high");
                            while (reader.Read())
                            {
                                Console.WriteLine(reader["name"] + "\t" + 
                                    reader["federation_id"] + "\t" + 
                                    reader["member_id"] + "\t" + 
                                    reader["range_low"] + "\t" + 
                                    reader["range_high"] + "\t");
                            }
                            Console.WriteLine();
                        }

                        // Route the connection to a federation member
                        command.CommandText = "USE FEDERATION " + federationName + "(" + distributionName + "=" + federationKey + ") WITH RESET, FILTERING = OFF";
                        command.ExecuteNonQuery();
                        command.CommandText = @"SELECT * FROM " + tableName;

                        using (SqlDataReader reader = command.ExecuteReader())
                        {
                            int iRowCount = 0;
                            while (reader.Read())
                            {
                                iRowCount++;
                            }
                            Console.WriteLine("There are {0} rows in this federation member with the federation key value of {1}.", iRowCount, federationKey.ToString());
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine( String.Format("Error:\r\n{0}\r\n{1}\r\n{2}", ex.Source, ex.Message, ex.StackTrace));
            }

            Console.WriteLine("\nPress ENTER to continue ... ");
            Console.ReadLine();

        }
    }
}

另請參閱

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見
Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2015 Microsoft