Экспорт (0) Печать
Развернуть все

Замечания по разработке в базе данных SQL Azure

Обновлено: Декабрь 2013 г.

Разработка приложений для Microsoft База данных SQL Microsoft Azure весьма напоминает разработку приложений для SQL Server. В этом разделе приведено описание нескольких различий и некоторых особенностей, которые следует учитывать при разработке приложений База данных SQL Microsoft Azure. Кроме того, в разделе содержатся основные шаги, которые должен предпринять разработчик, и перечислены рекомендуемые приемы кодирования.

Создание серверов базы данных SQL

Чтобы использовать База данных SQL Microsoft Azure, сначала необходимо создать учетную запись платформы Azure. Учетная запись платформы Azure используется для настройки и управления подписками, а также для выставления счетов за использование Azure, Azure AppFabric и База данных SQL Microsoft Azure. После создания учетной записи платформы Azure вы можете использовать портал управления платформой Azure для добавления или удаления сервера База данных SQL Azure и базы данных. Вы можете также воспользоваться API-интерфейсом управления базой данных SQL Azure для добавления и удаления серверов База данных SQL Azure программным путем и управления правилами брандмауэра, связанными с сервером.

Сервер База данных SQL Azure представляет собой логическую группу баз данных и служит центральной точкой администрирования нескольких баз данных. При создании сервера База данных SQL Azure автоматически создается доступная только для чтения база данных master. База данных master отслеживает, какие имена входа имеют разрешения на создание баз данных или других имен входа. Для выполнения операций CREATE, ALTER или DROP с именами входа или базами данных необходимо подключение к базе данных master. Дополнительные сведения об администрировании безопасности База данных SQL Microsoft Azure см. в разделе Управление базами данных и именами входа в базе данных SQL Azure.

По умолчанию брандмауэр База данных SQL Azure блокирует любой доступ к серверу База данных SQL Azure. Чтобы приступить к использованию своего сервера База данных SQL Azure, необходимо задать одно или несколько правил брандмауэра уровня сервера, которые разрешают доступ к этому серверу База данных SQL Azure. Правилами брандмауэра уровня сервера можно управлять с помощью пользовательского интерфейса портала управления или программным путем с помощью интерфейса API управления базами данных. Прежде чем вы сможете использовать интерфейс API управления базами данных, необходимо добавить сертификат для проверки подлинности, как описано в разделе Аутентификация запросов API управления базами данных SQL Windows Azure.

После создания параметра брандмауэра уровня сервера для просмотра и изменения параметров брандмауэра можно использовать имя входа субъекта серверного уровня и базу данных master. В базе данных master параметры брандмауэра называются правилами. Представление sys.firewall_rules отображает текущие параметры брандмауэра уровня сервера, которые можно изменять с помощью хранимых процедур sp_set_firewall_rule и sp_delete_firewall_rule.

Далее, если требуется управлять доступом к определенным базам данных, размещенным на сервере База данных SQL Azure, можно создать правила брандмауэра уровня базы данных для этих баз данных. Можно создать правила брандмауэра уровня базы данных для базы данных master и пользовательских баз данных. Теперь вы можете подключаться к базе данных и просматривать правила брандмауэра уровня базы данных в представлении sys.database_firewall_rules. Хранимые процедуры sp_set_database_firewall_rule и sp_delete_database_firewall_rule в базе данных master и пользовательских базах данных позволяют изменять правила брандмауэра уровня базы данных для соответствующих баз данных. Дополнительные сведения о правилах брандмауэра уровня сервера и базы данных см. в разделе Брандмауэр базы данных SQL Azure.

Доступ к подробным сведениям о выставлении счетов для конкретных учетных записей База данных SQL Azure на сервере База данных SQL Azure можно получить с помощью системных представлений sys.database_usage и sys.bandwidth_usage. Дополнительные сведения см. в разделе Учетные записи и выставление счетов в базе данных SQL Azure.

Создание баз данных SQL

Создавать базы данных База данных SQL Azure можно двумя способами:

  • С помощью портала управления. 

  • Используя инструкцию CREATE DATABASE.

Сведения о переносе базы данных из локального экземпляра SQL Server в База данных SQL Azure см. в разделе Миграция баз данных в базу данных SQL Azure (прежнее название — SQL Azure).

Кроме того, в примере кода в разделе Практическое руководство. подключиться к базе данных SQL Azure с использованием ADO.NET демонстрируется использование инструкции CREATE DATABASE в коде клиентского приложения.

noteПримечание
Чтобы изменить выпуск и имя базы данных после ее создания, используйте инструкцию ALTER DATABASE.

Построение и размещение приложений базы данных SQL

Построение и размещение приложений База данных SQL Microsoft Azure можно выполнить двумя способами:

Размещение приложения на платформе Azure позволяет минимизировать сетевую задержку при выполнении запросов к базе данных База данных SQL Azure. Развертывание приложения в Azure повышает эффективность транзакций между приложением и База данных SQL Azure по сравнению со случаем, когда приложение размещается вне Azure. Дополнительные сведения о размещении приложения и данных в облаке см. в разделе Доступ к данным базы данных SQL Azure.

Полоса пропускания сети, применяемая для обмена данными между База данных SQL Azure и Azure или Azure AppFabric, в рамках одной области или одного центра обработки данных предоставляется бесплатно. При развертывании приложения Azure размещайте приложение и базу данных База данных SQL Azure в одной и той же области, чтобы сократить затраты на используемую полосу пропускания сети. Дополнительные сведения см. в разделе Учетные записи и выставление счетов в базе данных SQL Azure.

Разработка приложений базы данных SQL

Разработка приложений для База данных SQL Microsoft Azure сходна с разработкой приложений для SQL Server. При разработке приложения, осуществляющего доступ к База данных SQL Microsoft Azure, можно использовать много различных типов приложений и технологий. База данных SQL Microsoft Azure работает с приложениями сторонних поставщиков, языком PHP и многими приложениями Microsoft, в том числе с ADO.NET, Entity Framework, Службы WCF Data Services и ODBC.

База данных SQL Microsoft Azure обеспечивает полноценное многопользовательское обслуживание баз данных на основе общих источников. Чтобы обеспечивались хорошие условия работы для всех клиентов База данных SQL Microsoft Azure, соединение клиента со службой может быть закрыто при возникновении следующих условий.

  • Чрезмерное использование ресурсов

  • Долго выполняющиеся запросы

  • Долго выполняющиеся отдельные транзакции (между инструкциями BEGIN TRAN и END TRAN)

  • Простаивающие соединения

В этом состоит отличие от использования локального экземпляра SQL Server.

Чтобы обеспечить нормальное продолжение работы пользователя в случае разрыва соединения, включите в приложение логику повторных попыток, обнаруживающую закрытые соединения и повторяющую попытку выполнить прерванное действие. Дополнительные сведения об ограничениях на соединения в База данных SQL Microsoft Azure см. в разделе Общие рекомендации и ограничения в базе данных SQL Azure.

Когда клиентское приложение подключается к База данных SQL Microsoft Azure, CONTEXT_INFO (Transact-SQL) автоматически устанавливается в уникальное для конкретного сеанса значение GUID. Получите это значение идентификатора GUID и используйте его в своем приложении для отслеживания проблем с соединением.

Следующие инструкции на языке C# показывают изменение приложения для отслеживания состояния соединения.


// Define global variables.
private static Dictionary<SqlConnection, Guid> _cache = new Dictionary<SqlConnection, Guid>();
public static SqlConnection conn;

// Connect to the sample database.
using (conn = new SqlConnection(connStringBuilder.ToString()))
{
   // Define the event handler.
   conn.StateChange += new StateChangeEventHandler(OnConnectionStateChange);
   conn.Open();
   using (SqlCommand command = conn.CreateCommand())
   {
      // Perform a query or an update.
      // Retrieve the session ID.
      Guid id = SessionId(conn);
      conn.Close();
    }
}

// Retrieve the session ID to track the connectivity. 
public static Guid SessionId(this SqlConnection conn)
{
    return _cache[conn];
}

// Implement your event handler.
public static void OnConnectionStateChange(object sender, StateChangeEventArgs e)
{
   SqlConnection conn = (SqlConnection)sender;
   switch (e.CurrentState)
   {    
      case ConnectionState.Broken:
           Console.WriteLine("Connection is broken...");
           _cache.Remove(conn);
           break;
      case ConnectionState.Closed:
           Console.WriteLine("Connection is closed...");
           _cache.Remove(conn);
           break;
      case ConnectionState.Open:
           Console.WriteLine("Connection is open...");
           using (SqlCommand cmd = conn.CreateCommand())
           {
               cmd.CommandText = "SELECT CONVERT(NVARCHAR(36), CONTEXT_INFO())";
              _cache[conn] = new Guid(cmd.ExecuteScalar().ToString());
            }
            break;
   }
}

См. также

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2014 Microsoft