(0) exportieren Drucken
Alle erweitern

Vorgehensweise: Herstellen einer Verbindung mit einem Verbund in der Azure SQL-Datenbank

Letzte Aktualisierung: April 2014

In diesem Thema wird beschrieben, wie Sie in Azure SQL-Datenbank eine Verbindung mit einem Verbund herstellen können. Allgemeine Überlegungen zum Herstellen einer Verbindung mit Datenbanken in SQL-Datenbank finden Sie unter Richtlinien zum Herstellen einer Verbindung mit der Windows Azure SQL-Datenbank.

Die Verbindung mit den Daten eines Verbunds wird mithilfe der USE FEDERATION (Azure SQL-Datenbank)-Anweisung hergestellt. Alle Verbindungen werden zunächst mit der Datenbank hergestellt, die den Verbund (Verbundstamm) enthält. Diese leitet anschließend die Verbindung an das entsprechende Verbundmitglied weiter. Zu welchem Verbundmitglied die Verbindung weitergeleitet wird, wird anhand des Verbundschlüsselwerts ermittelt, der als Teil der USE FEDERATION-Anweisung angegeben wird.

ImportantWichtig
Die aktuelle Implementierung von Verbünden wird zusammen mit den Web- und Business-Dienstebenen eingestellt. Erwägen Sie die Bereitstellung benutzerdefinierter Shardinglösungen, um Skalierbarkeit, Flexibilität und Leistung zu maximieren. Weitere Informationen zum benutzerdefinierten Sharding finden Sie unter Horizontales Skalieren von Azure SQL-Datenbanken.

Das folgende Beispiel ist eine Konsolenanwendung, über die eine Verbindung mit einer SQL-Datenbank mit Verbund hergestellt wird. Von der Konsolenanwendung werden die folgenden Schritte ausgeführt:

  1. Zuerst wird mithilfe eines SQLConnectionStringBuilder-Objekts die Verbindungszeichenfolge erstellt.

  2. Anschließend stellt die Konsolenanwendung eine Verbindung mit dem Verbundstamm her, um die Daten des Verbundmitglieds abzurufen und anzuzeigen.

  3. Zum Schluss stellt die Konsolenanwendung eine Verbindung mit einem Verbundmitglied her und zählt die Zeilen im Verbundmitglied.

Führen Sie die folgenden Schritte aus, um dieses Beispiel in Visual Studio mit dem SQL-Datenbank-Server zu verwenden:

  1. Öffnen Sie Visual Studio, und erstellen Sie eine neue Konsolenanwendung.

  2. Ersetzen Sie den Code in der Programmdatei durch den Code aus diesem Beispiel.

  3. Ersetzen Sie den Wert der acht statischen Datenelemente.

  4. Führen Sie den Code aus.


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();

        }
    }
}

Siehe auch

Anzeigen:
© 2014 Microsoft