エクスポート (0) 印刷
すべて展開

方法: Azure SQL データベースのフェデレーションへの接続

更新日: 2014年4月

ここでは、Azure SQL データベース のフェデレーションに接続する方法について説明します。SQL データベース でのデータベースへの接続に関する基本的な注意事項については、「Windows Azure SQL データベースに接続するためのガイドライン」を参照してください。

フェデレーションのデータへの接続の確立は、USE FEDERATION (Azure SQL データベース) ステートメントを使用して行います。すべての接続は、フェデレーションを含むデータベース (フェデレーション ルート) に対して確立されます。次に、接続は適切なフェデレーション メンバーにルーティングされます。接続のルーティング先のフェデレーション メンバーは、USE FEDERATION ステートメントの一部として指定されるフェデレーション キー値により決まります。

Important重要
フェデレーションの現在の実装は、Web およびビジネス サービス層と共に提供が終了します。最大限のスケーラビリティ、柔軟性、およびパフォーマンスを実現するためには、カスタム シャーディングの展開を検討してください。カスタム シャーディングの詳細については、「Azure SQL データベースのスケール アウト」を参照してください。

次の例は、フェデレーションが含まれる SQL データベース に接続するコンソール アプリケーションの例です。コンソール アプリケーションは、次の手順で実行されます。

  1. まず、SQLConnectionStringBuilder オブジェクトを使用して接続文字列を構築します。

  2. 次に、フェデレーション ルートに接続し、フェデレーション メンバー データを取得して表示します。

  3. 最後に、フェデレーション メンバーに接続し、フェデレーション メンバー内の行をカウントします。

SQL データベース サーバーを利用して Visual Studio でこの例を使用するには、次の手順を実行してください。

  1. Visual Studio を開き、新しいコンソール アプリケーションを作成します。

  2. プログラム ファイルのコードを、この例のコードに置き換えます。

  3. 8 つの静的なデータ メンバーの値を置き換えます。

  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