Exportar (0) Imprimir
Expandir todo

Cómo Conectar una federación en Base de datos SQL de Azure

Actualizado: abril de 2014

En este tema se describe cómo puede conectarse a una federación en Base de datos SQL de Azure. Para conocer consideraciones generales sobre cómo conectarse a bases de datos en Base de datos SQL, vea Instrucciones para conectar con Base de datos SQL de Windows Azure.

Para establecer una conexión a los datos de la federación se usa la instrucción USE FEDERATION (Azure SQL Database). Todas las conexiones se establecen a la base de datos que contiene la federación (raíz de la federación), que entonces enruta la conexión al miembro de la federación apropiado. El miembro de la federación al que se enruta la conexión se determina mediante el valor de la clave de la federación, que se especifica como parte de la instrucción USE FEDERATION.

ImportantImportante
La implementación actual de Federaciones se retirará con los niveles de servicio Web y Business. Tenga en cuenta la implementación de soluciones de particionamiento personalizado para conseguir la máxima escalabilidad, flexibilidad y rendimiento. Para obtener más información sobre el particionamiento personalizado, vea Ampliar Bases de datos SQL de Azure.

El ejemplo siguiente es una aplicación de consola que se conecta a una Base de datos SQL con federación. La aplicación de consola realiza estos pasos:

  1. En primer lugar, la aplicación de consola usa un objeto SQLConnectionStringBuilder para construir la cadena de conexión.

  2. Después, la aplicación de consola se conecta a la raíz de la federación para recuperar y mostrar los datos de los miembros de la federación.

  3. Finalmente, la aplicación de consola se conecta a un miembro de la federación y contabiliza las filas del mismo.

Para usar este ejemplo en Visual Studio con un servidor Base de datos SQL, siga estos pasos:

  1. Abra Visual Studio y cree una nueva aplicación de consola.

  2. Reemplace el código del archivo de programa con el código de este ejemplo.

  3. Reemplace el valor de los ocho miembros de datos estáticos.

  4. Ejecute el código.


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

        }
    }
}

Vea también

Mostrar:
© 2014 Microsoft