Файлы данных SQL Server в Microsoft Azure

Применимо к:SQL Server

A decorative image of data files on Azure.

Файлы данных SQL Server в Microsoft Azure включают встроенную поддержку файлов баз данных SQL Server, которые хранятся в виде больших двоичных объектов. Этот компонент позволяет создать базу данных на сервере SQL Server, работающем локально или на виртуальной машине в Microsoft Azure, с назначенным местом хранения для данных в хранилище BLOB-объектов Microsoft Azure. Он также упрощает процесс перемещения баз данных между компьютерами. Вы можете отсоединить базы данных от одного компьютера и присоединить их к другому компьютеру. Кроме того, данный компонент предоставляет альтернативное расположение для хранения файлов резервных копий баз данных, позволяя выполнять восстановление из службы хранилища Microsoft Azure и в нее. Поэтому он обеспечивает возможность реализации нескольких гибридных решений, предоставляя ряд преимуществ для виртуализации данных, перемещения данных, безопасности и доступности, а также достижения снижения затрат и обслуживания для высокого уровня доступности и эластичного масштабирования.

Внимание

Хранение системных баз данных в хранилище BLOB-объектов Azure не рекомендуется и не поддерживается.

В этой статье рассматриваются основные понятия и рекомендации по хранению файлов данных SQL Server в службе хранилища Microsoft Azure.

Практический практический опыт использования этой функции см. в руководстве по использованию хранилища BLOB-объектов Microsoft Azure с базами данных SQL Server.

Зачем использовать файлы данных SQL Server в Microsoft Azure?

  • Преимущества простой и быстрой миграции . Эта функция упрощает процесс миграции, перемещая одну базу данных за один раз между локальными компьютерами и между локальной и облачной средами без внесения каких-либо изменений в приложения. Поэтому он поддерживает добавочную миграцию, сохраняя при этом без изменений существующую локальную инфраструктуру. Кроме того, наличие доступа к централизованному хранилищу данных позволяет упростить логику приложения, когда приложение необходимо выполнять в нескольких местах в локальной среде. В некоторых случаях может потребоваться быстро настроить вычислительные центры, которые собирают данные из множества различных источников, в географически удаленных друг от друга местах. Чтобы не переносить данные из одного места в другое, с помощью файлов данных Azure вы можете сохранять множество баз данных в виде страничных BLOB-объектов Microsoft Azure, а затем с помощью скриптов Transact-SQL создавать базы данных на локальных компьютерах или виртуальных машинах.

  • Преимущества стоимости и неограниченного хранилища . Эта функция позволяет иметь неограниченное внешнее хранилище в Microsoft Azure при использовании локальных вычислительных ресурсов. При использовании Microsoft Azure в качестве места хранения можно сконцентрироваться на проработке логики приложения, не обращая внимания на издержки, связанные с управлением оборудованием. Если любой локальный вычислительный узел выходит из строя, можно настроить новый без перемещения каких-либо данных.

  • Преимущества высокой доступности и аварийного восстановления. Использование функции файлов данных SQL Server в Microsoft Azure может упростить решения высокого уровня доступности и аварийного восстановления. Например, в случае сбоя виртуальной машины в Microsoft Azure или экземпляра SQL Server можно будет повторно создать базы данных в новом экземпляре SQL Server, просто восстановив ссылки на большие двоичные объекты.

  • Преимущества защиты. Используя файлы данных SQL Server в Azure, можно отделить вычислительный экземпляр от экземпляра хранилища. Кроме того, можно настроить полностью зашифрованную базу данных, расшифровка которой будет происходить только в вычислительном экземпляре, а не в экземпляре хранилища. Другими словами, вы можете шифровать все данные в общедоступном облаке с использованием сертификатов TDE, которые физически отделены от данных. Ключи TDE можно хранить в master базе данных, которая хранится локально на локальном компьютере и выполняет резервное копирование локально. Эти локальные ключи можно использовать для шифрования данных, которые находятся в службе хранилища Microsoft Azure. Если учетные данные учетной записи облачного хранилища украдены, данные останутся защищенными, поскольку сертификаты TDE всегда находятся на локальном компьютере.

  • Резервное копирование моментальных снимков. Эта функция позволяет использовать моментальные снимки Azure для обеспечения практически мгновенного резервного копирования и быстрого восстановления файлов баз данных, хранящихся в хранилище BLOB-объектов Azure. Это позволяет упростить политики архивации и восстановления политик. Дополнительные сведения см. в разделе Резервные копии моментальных снимков файлов для файлов базы данных в Azure.

Основные понятия и требования

Диски Azure совместимы с решениями по обеспечению непрерывности бизнес-процессов и аварийного восстановления в масштабе предприятия. Если вы храните базы данных непосредственно на больших двоичных объектах или в файлах Azure Premium, данные не связываются с виртуальной машиной автоматически для инфраструктуры, управления и мониторинга.

Размещение файлов базы данных на страничных BLOB-объектах является более сложной функцией, чем использование дисков Azure, которые просты и понятны.

Основная рекомендация заключается в использовании дисков Azure, если в вашем сценарии вам действительно не нужно избежать создания копии данных для резервного копирования или восстановления в качестве операции по размеру данных. Для обеспечения высокого уровня доступности и аварийного восстановления выгоднее использовать регулярное резервное копирование на URL-адрес или управляемое резервное копирование в хранилище BLOB-объектов, чем резервное копирование моментальных снимков файлов, так как вы получаете управление жизненным циклом, поддержку нескольких регионов, обратимое удаление и другие возможности хранилища BLOB-объектов для резервных копий.

Основные понятия хранения

При использовании компонента SQL Server Data Files в Azure необходимо создать учетную запись хранения и контейнер в Azure. Затем необходимо создать учетные данные SQL Server, которые включают сведения о политике контейнера, а также подпись общего доступа, необходимую для доступа к контейнеру.

В Microsoft Azure учетная запись хранилища Azure представляет наивысший уровень пространства имен для доступа к большим двоичным объектам. Учетная запись хранения может содержать сколько угодно контейнеров при условии, что их общий размер не превышает размер хранилища. Последнюю информацию относительно ограничений хранилища смотрите в Подписка и Ограничения Хранилища Azure, Квоты и Ограничения. Контейнер обеспечивает группирование набора больших двоичных объектов. Все BLOB-объекты должны содержаться в контейнере. Учетная запись может содержать неограниченное число контейнеров. В контейнере также может храниться неограниченное количество больших двоичных объектов.

Существует два типа BLOB-объектов, которые могут храниться в хранилище Azure: блочные и страничные. Этот новый компонент использует страничные BLOB-объекты, которые являются более эффективными в тех случаях, когда диапазоны байтов в файле часто изменяются. К большим двоичным объектам можно обращаться по URL-адресам в следующем формате: https://storageaccount.blob.core.windows.net/<container>/<blob>.

Заметка

Блочные BLOB-объекты нельзя использовать для файлов данных SQL Server. Используйте страничные BLOB-объекты.

Вопросы оплаты Azure

Оценка затрат на использование служб Azure — это важный вопрос, который необходимо учитывать в процессе принятия решения и планирования. При хранении файлов данных SQL Server в хранилище Azure оплачивается стоимость использования хранилища и выполнения транзакций. Кроме того, реализация компонента SQL Server Data Files в службе хранилища Azure требует неявного возобновления аренды большого двоичного объекта каждые 45–60 секунд. При этом также возникают затраты на транзакции для каждого файла базы данных, например, MDF или LDF. Для оценки ежемесячных затрат на использование службы хранилища Azure и виртуальных машин Azure воспользуйтесь информацией на странице Цены Azure.

Основные понятия SQL Server

Чтобы использовать страничные BLOB-объекты Azure для файлов данных SQL Server, сделайте следующее:

  • Создайте политику в контейнере и создайте подписанный URL-адрес (SAS).

  • Для каждого контейнера, используемого файлом данных или журнала, создайте учетные данные SQL Server, имя которых соответствует пути контейнера.

  • Храните сведения о контейнере службы хранилища Azure, связанную с ним политику и ключ SAS в хранилище учетных данных SQL Server.

В следующем примере предполагается, что контейнер службы хранилища Azure создан, а политика предусматривает права на чтение, запись и создание списков. При создании политики для контейнера формируется ключ SAS, который безопасно размещать в памяти в незашифрованном виде. SQL Server использует этот ключ для доступа к файлам больших двоичных объектов в контейнере.

В следующем фрагменте кода замените '<your SAS key>' ключом SAS. Ключ SAS выглядит следующим образом: 'sr=c&si=<MYPOLICYNAME>&sig=<THESHAREDACCESSSIGNATURE>'.

CREATE CREDENTIAL [https://testdb.blob.core.windows.net/data]  
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = '<your SAS key>'  
  
CREATE DATABASE testdb   
ON  
( NAME = testdb_dat,  
    FILENAME = 'https://testdb.blob.core.windows.net/data/TestData.mdf' )  
 LOG ON  
( NAME = testdb_log,  
    FILENAME =  'https://testdb.blob.core.windows.net/data/TestLog.ldf')  

Внимание

Если в контейнере имеются любые активные ссылки на файлы данных, попытки удаления соответствующих учетных данных SQL Server заканчиваются сбоем.

Дополнительные сведения см. в статье Управление анонимным доступом на чтение к контейнерам и большим двоичным объектам

Безопасность

При хранении файлов данных SQL Server в службе хранилища Azure необходимо учитывать следующие требования и вопросы безопасности.

  • При создании контейнера для Хранилища BLOB-объектов Azure рекомендуется установить для него частные права доступа. При выборе частного типа доступа данные контейнера и больших двоичных объектов могут быть прочитаны только владельцем учетной записи Azure.

  • При хранении файлов базы данных SQL Server в службе хранилища Azure необходимо использовать подписанный URL-адрес (URI, который предоставляет ограниченные права доступа к контейнерам, большим двоичным объектам, очередям и таблицам). С помощью подписанного URL-адреса можно обеспечить SQL Server возможность доступа к ресурсам из учетной записи без предоставления доступа к ключу учетной записи службы хранилища Azure.

  • Кроме того, рекомендуется продолжать использовать стандартные методы обеспечения безопасности локальных баз данных.

Предварительные требования для установки

Далее приведены обязательные компоненты, которые необходимы при хранении файлов данных SQL Server в Azure.

  • Локальная версия SQL Server. Этот компонент входит в SQL Server 2016 и более поздние версии. Чтобы узнать, как скачать последнюю версию SQL Server, см. раздел SQL Server.

  • SQL Server, выполняемый на виртуальной машине Azure. Если вы устанавливаете SQL Server на виртуальную машину Azure, установите SQL Server 2016 или обновите существующий экземпляр. Также можно создать новую виртуальную машину в Azure с помощью образа платформы SQL Server 2016.

Ограничения

  • В связи с характеристиками производительности рабочих нагрузок SQL Server файлы данных SQL Server реализуются как страничные BLOB-объекты в хранилище BLOB-объектов Azure. Другие типы хранилища BLOB-объектов, такие как блочные BLOB-объекты или Azure Data Lake Storage, не поддерживаются.

  • В текущем выпуске этого компонента хранение данных FileStream в службе хранилища Azure не поддерживается. Вы можете хранить данные FileStream в базе данных, которая также содержит файлы данных, хранящихся в службе хранилища Azure, но все файлы данных FileStream должны храниться в локальном хранилище. Так как данные FileStream должны находиться в локальном хранилище, их нельзя перемещать между компьютерами с помощью службы хранилища Azure. Поэтому рекомендуется продолжать использовать традиционные методы для перемещения данных, связанных с FileStream, между разными компьютерами.

  • Сейчас только один экземпляр SQL Server может в определенный момент времени получить доступ к указанному файлу базы данных в службе хранилища Azure. Если ЭкземплярА находится в сети с активным файлом базы данных и если ЭкземплярB случайно запущен, а также база данных, указывающая на тот же файл данных, второй экземпляр не сможет запустить базу данных с кодом 5120 Unable to open the physical file "%.\*ls". Operating system error %d: "%ls"ошибки.

  • Только MDF-, LDF- и NDF-файлы могут храниться в службе хранилища Azure с использованием компонента SQL Server Data Files в Azure.

  • При использовании компонента SQL Server Data Files в Azure георепликация для учетной записи не поддерживается. Если в учетной записи работает георепликация и была выполнена географическая отработка отказа, может произойти повреждение базы данных.

  • Ограничения емкости см. в разделе Общие сведения о хранилище BLOB-объектов.

  • Невозможно сохранить данные выполняющейся в памяти OLTP в хранилище BLOLB-объектов с помощью компонента SQL Server Data Files в службе хранилища Azure. Это происходит потому, что выполняющаяся в памяти OLTP зависит от FileStream , и в текущем выпуске этого компонента хранение данных FileStream в службе хранилища Azure не поддерживается.

  • При использовании файлов данных SQL Server в Azure SQL Server выполняет все сравнения URL-адресов или пути к файлам с помощью набора параметров сортировки в master базе данных.

  • Использовать группы доступности Always On можно в том случае, если вы не добавляете новые файлы базы данных в базу данных в первичной реплике. Если для выполнения операции базы данных требуется создание нового файла в базе данных в первичной реплике, сначала отключите группы доступности на вторичном узле. Затем выполните операцию базы данных в базе данных и создайте резервную копию базы данных в первичной реплике. Затем восстановите базу данных во вторичной реплике. После завершения повторно включите группы доступности Always On на вторичном узле.

    Заметка

    При использовании компонента "SQL Server Data Files в Azure" экземпляры отказоустойчивого кластера Always On не поддерживаются.

  • При обычной работе SQL Server использует временные аренды, чтобы зарезервировать большие двоичные объекты для хранения с возобновлением аренды каждого большого двоичного объекта каждые 45–60 секунд. Если происходит сбой сервера и запускается другой экземпляр SQL Server, который настроен для использования тех же больших двоичных объектов, новый экземпляр будет ждать окончания аренды для большого двоичного объекта вплоть до 60 секунд. Если необходимо присоединить базу данных к другому экземпляру и ждать окончания срока аренды в течение 60 секунд невозможно, то можно явно прервать аренду большого двоичного объекта.

Средства и справочник по программированию

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

Поддержка PowerShell

Используйте командлеты PowerShell для хранения файлов данных SQL Server в службе хранилища BLOB-объектов, указывая URL-адрес хранилища вместо пути к файлу. Обращайтесь к большим двоичным объектам по URL-адресам в следующем формате: https://storageaccount.blob.core.windows.net/<container>/<blob>.

Поддержка объектов SQL Server и счетчиков производительности

Начиная с SQL Server 2014, добавлен новый объект SQL Server для использования с компонентом SQL Server Data Files в службе хранилища Azure. Новый объект SQL Server вызывается как SQL Server, HTTP_STORAGE_OBJECT и может использоваться системным монитором для отслеживания действий, выполняемых при работе SQL Server со службой хранилища Azure.

Поддержка среды SQL Server Management Studio

Среда SQL Server Management Studio позволяет использовать этот компонент с помощью нескольких диалоговых окон. Например, https://teststorageaccnt.blob.core.windows.net/testcontainer/ представляет путь URL-адреса контейнера хранилища. Этот путь можно увидеть в нескольких диалоговых окнах, таких как новая база данных, присоединение базы данных и восстановление базы данных. Дополнительные сведения см. в руководстве по использованию хранилища BLOB-объектов Azure с базами данных SQL Server.

Поддержка управляющих объектов SQL Server (SMO)

При использовании компонента SQL Server Data Files в Azure поддерживаются все управляющие объекты SQL Server (SMO). Если объект SMO требует пути к файлам, вместо локального пути используйте формат URL-адреса большого двоичного объекта, например https://teststorageaccnt.blob.core.windows.net/testcontainer/. Дополнительные сведения о объектах управления SQL Server (SMO) см . в руководстве по программированию объектов управления SQL Server (SMO) в электронной документации по SQL Server.

Поддержка Transact-SQL

С добавлением этого компонента связаны следующие изменения в контактной зоне Transact-SQL:

  • Новый столбец credential_idint в системном представленииsys.master_files. Столбец credential_id используется для включения перекрестной ссылки sys.credentials на файлы данных службы хранилища Azure для учетных данных, созданных для них. Это можно использовать для устранения неполадок, например когда невозможно удалить учетные данные при наличии файла базы данных, который использует их.

Устранение неполадок с файлами данных SQL Server в Microsoft Azure

Для избежания ошибок в связи с не поддерживаемыми функциями или ограничениями, обратитесь сначала к Limitations.

Далее приведен список ошибок, которые могут быть получены при использовании SQL Server Data Files в службе хранилища Azure.

Ошибки проверки подлинности

  • Не удается удалить учетные данные "%.*ls", так как он используется активным файлом базы данных.
    Решение. Эта ошибка отображается при попытке удалить учетные данные, которые используются активным файлом базы данных в службе хранилища Azure. Чтобы удалить учетные данные, необходимо сначала удалить сопоставленный большой двоичный объект, которому принадлежит этот файл базы данных. Чтобы удалить большой двоичный объект с активной арендой, сначала необходимо прервать аренду.

  • Подписанный URL-адрес был создан в контейнере неправильно.
    Решение. Убедитесь, что вы правильно создали подписанный URL-адрес в контейнере. Ознакомьтесь с инструкциями, приведенными на занятии 2, в руководстве. Использование хранилища BLOB-объектов Azure с базами данных SQL Server.

  • Учетные данные SQL Server созданы неправильно.
    Решение. Убедитесь, что в поле Идентификатор указано значение "Подписанный URL-адрес" и секретный код сформирован правильно. Ознакомьтесь с инструкциями, приведенными на занятии 3 в руководстве. Использование хранилища BLOB-объектов Azure с базами данных SQL Server.

Ошибки аренды больших двоичных объектов

  • Ошибка при попытке запустить SQL Server после сбоя другого экземпляра, использующего те же файлы больших двоичных объектов. Разрешение. Во время нормальной работы SQL Server использует временные аренды для резервирования больших двоичных объектов для хранения с продлением аренды каждого большого двоичного объекта каждые 45–60 секунд. Если происходит сбой сервера и запускается другой экземпляр SQL Server, который настроен для использования тех же больших двоичных объектов, новый экземпляр будет ждать окончания аренды для большого двоичного объекта вплоть до 60 секунд. Если необходимо присоединить базу данных к другому экземпляру и ждать окончания срока аренды в течение 60 секунд невозможно, то можно явно прервать аренду большого двоичного объекта, чтобы избежать сбоев операций присоединения.

Ошибки базы данных

Ошибки при создании разрешения базы данных . Ознакомьтесь с инструкциями, приведенными на занятии 4 в руководстве. Использование хранилища BLOB-объектов Microsoft Azure с базами данных SQL Server.

Ошибки при выполнении инструкции Alter. Решение. Инструкцию Alter необходимо выполнять, когда база данных подключена к сети. При копировании файлов данных в службу хранилища Azure всегда создавайте страничный, а не блочный большой двоичный объект. В противном случае инструкция ALTER для базы данных завершится ошибкой. Ознакомьтесь с инструкциями, приведенными на занятии 7 в руководстве. Использование хранилища BLOB-объектов Microsoft Azure с базами данных SQL Server.

Код ошибки — 5120 Не удается открыть физический файл "%.*ls". Ошибка операционной системы %d: "%ls"

Решение. Сейчас этот компонент не поддерживает одновременный доступ нескольких экземпляров SQL Server к одним и тем же файлам базы данных в службе хранилища Azure. Если ЭкземплярА находится в сети с активным файлом базы данных, и если ЭкземплярB запущен, а также база данных, указывающая на тот же файл данных, второй экземпляр не сможет запустить базу данных с кодом 5120 Unable to open the physical file "%.\*ls". Operating system error %d: "%ls"ошибки.

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

  1. С помощью инструкции ALTER установите для InstanceA пути к файлам из локальных папок.

  2. Переведите базу данных на InstanceA в автономный режим.

  3. Затем скопируйте файлы базы данных из службы хранилища Azure в локальную папку на InstanceA. Это гарантирует, что на InstanceA по-прежнему будет находиться локальная копия базы данных.

  4. Переведите базу данных в режим «в сети».

Код ошибки 833 — выполнение запросов ввода-вывода длится более 15 секунд

Эта ошибка означает, что система хранения не может удовлетворить требованиям рабочей нагрузки SQL Server. Сократите активность операций ввода-вывода на уровне приложения или увеличьте пропускную способность на уровне хранилища. Дополнительные сведения см. в разделе Ошибка 833. Если проблемы с производительностью не удается устранить, рассмотрите возможность перемещения файлов в хранилище другого уровня, например Premium или UltraSSD. Сведения об SQL Server на виртуальных машинах Azure см. в разделе об оптимизации производительности хранилища.

Далее