销售电话: 1-800-867-1380

如何:连接到 Azure SQL Database 中的联合

更新时间: 2014年4月

本主题将介绍如何连接到 Azure SQL Database 中的联合。有关连接到 SQL Database 中的数据库的一般注意事项,请参阅针对连接 Windows Azure SQL Database 的指导原则

建立与联合的数据的连接是通过使用 USE FEDERATION (Azure SQL Database)语句实现的。建立的所有连接都是针对包含联合的数据库(联合根),然后将连接路由到适当的联合成员。连接路由到的联合成员由联合键值确定,该联合键值作为 USE FEDERATION 语句的一部分指定。

Important重要提示
联合的当前实现将随 Web 和企业版一起停用。请考虑部署自定义分片解决方案,来最大限度地提高可伸缩性、灵活性和性能。有关自定义分片的详细信息,请参阅向外扩展 Azure SQL Database

下面的示例是连接到具有联合的 SQL Database 的控制台应用程序。该控制台应用程序执行以下步骤:

  1. 首先,该控制台应用程序使用 SQLConnectionStringBuilder 对象来构建连接字符串。

  2. 然后,该控制台应用程序连接到联合根以便检索和显示联合成员数据。

  3. 最后,该控制台应用程序连接到某一联合成员并且对该联合成员中的行进行计数。

若要在 Visual Studio 中将此示例与 SQL Database 服务器一起使用,请执行以下步骤:

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

        }
    }
}

另请参阅

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft