匯出 (0) 列印
全部展開

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

更新日期: 2014年4月

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

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

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

另請參閱

顯示:
© 2014 Microsoft