セールス: 1-800-867-1380

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

更新日: 2015年1月

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

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

Important重要
フェデレーションの現在の実装は、Web およびビジネス サービス層で廃止される予定です。Azure SQL Database でシャーディングされたスケールアウト ソリューションを構築するには、Elastic Scale for Azure SQL Database の使用を検討してください。この機能を試すには、「Azure SQL Database Elastic Scale Preview の概要」を参照してください。

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

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

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

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

SQL Database に移動 サーバーを利用して 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();

        }
    }
}

関連項目

この情報は役に立ちましたか。
(残り 1500 文字)
フィードバックをいただき、ありがとうございました
表示:
© 2015 Microsoft