Файлы данных SQL Server в Azure
SQL Server файлы данных в Azure обеспечивает встроенную поддержку файлов базы данных SQL Server, хранящихся в виде BLOB-объектов Azure. Это позволяет создать базу данных в SQL Server, работающей в локальной среде или на виртуальной машине в Azure, с выделенным местом хранения данных в Хранилище BLOB-объектов Azure. Это усовершенствование значительно упрощает перемещение баз данных между компьютерами с помощью операций отсоединения и присоединения. Кроме того, он предоставляет альтернативное место хранения для файлов резервных копий базы данных, позволяя выполнять восстановление из службы хранилища Azure или в нее. Поэтому он обеспечивает возможность реализации нескольких гибридных решений, предоставляя ряд преимуществ для виртуализации данных, перемещения данных, безопасности и доступности, а также достижения снижения затрат и обслуживания для высокого уровня доступности и эластичного масштабирования.
В этом разделе рассматриваются основные понятия и рекомендации, которые являются ключевыми при хранении файлов данных SQL Server в службе хранилища Azure.
Практические практические практические инструкции по использованию этой новой функции см. в статье Руководство по SQL Server файлов данных в службе хранилища Azure.
На следующей схеме показано, что это улучшение позволяет хранить SQL Server файлы базы данных в виде BLOB-объектов Azure в службе хранилища Azure независимо от расположения сервера.
Преимущества использования файлов данных SQL Server в Azure
Преимущества простой и быстрой миграции. Эта функция упрощает процесс миграции, перемещая одну базу данных за один раз между локальными компьютерами и между локальной и облачной средой без внесения каких-либо изменений в приложения. Поэтому он поддерживает добавочную миграцию, сохраняя при этом без изменений существующую локальную инфраструктуру. Кроме того, наличие доступа к централизованному хранилищу данных позволяет упростить логику приложения, когда приложение необходимо выполнять в нескольких местах в локальной среде. В некоторых случаях может потребоваться быстро настроить вычислительные центры, которые собирают данные из множества различных источников, в географически удаленных друг от друга местах. С помощью этого нового улучшения вместо перемещения данных из одного расположения в другое можно хранить множество баз данных в виде больших двоичных объектов Azure, а затем выполнять скрипты Transact-SQL для создания баз данных на локальных или виртуальных машинах.
Преимущества хранилища без ограничений и стоимости: Эта функция позволяет использовать неограниченное локальное хранилище в Azure при использовании локальных вычислительных ресурсов. При использовании Azure в качестве хранилища можно легко сосредоточиться на логике приложения без дополнительных затрат на управление оборудованием. Если любой локальный вычислительный узел выходит из строя, можно настроить новый без перемещения каких-либо данных.
Преимущества высокого уровня доступности и аварийного восстановления. Использование SQL Server файлов данных в Azure может упростить решения для обеспечения высокого уровня доступности и аварийного восстановления. Например, если происходит сбой виртуальной машины в Azure или экземпляре SQL Server, можно повторно создать базы данных на новом компьютере, просто повторно установив ссылки на blob-объекты Azure.
Преимущества для безопасности. Этот новый компонент позволяет вам разделять вычислительный экземпляр от экземпляра хранилища. Кроме того, можно настроить полностью зашифрованную базу данных, расшифровка которой будет происходить только в вычислительном экземпляре, а не в экземпляре хранилища. Иными словами, с помощью этого нового улучшения можно шифровать все данные в общедоступном облаке с помощью сертификатов прозрачного шифрования данных (TDE), которые физически отделены от данных. Ключи шифрования TDE могут храниться в базе данных master, которая размещена локально на физически безопасном локальном компьютере с локальным резервным копированием. Эти локальные ключи можно использовать для шифрования данных, которые находятся в службе хранилища Azure. Если учетные данные учетной записи облачного хранилища украдены, данные останутся защищенными, поскольку сертификаты TDE всегда находятся на локальном компьютере.
Основные понятия и требования
Основные понятия хранения
При использовании компонента SQL Server Data Files в Azure необходимо создать учетную запись хранения и контейнер в Azure. Затем необходимо создать учетные данные SQL Server, которые включают сведения о политике контейнера, а также подпись общего доступа, необходимую для доступа к контейнеру.
В Azure учетная запись хранения представляет самый высокий уровень пространства имен для доступа к BLOB-объектам. Учетная запись хранилища может содержать неограниченное количество контейнеров при условии, что их общий размер не превышает 500 ТБ. Последнюю информацию относительно ограничений хранилища смотрите в Подписка и Ограничения Хранилища Azure, Квоты и Ограничения. Контейнер группирует набор больших двоичных объектов. Все большие двоичные объекты должны находиться в контейнере. Учетная запись может содержать неограниченное число контейнеров. В контейнере также может храниться неограниченное количество больших двоичных объектов. Существует два типа BLOB-объектов, которые могут храниться в хранилище Azure: блочные и страничные. Этот новый компонент использует страничные большие двоичные объекты, размер которых может быть до 1 ТБ и которые являются более эффективными в тех случаях, когда диапазоны байтов в файле часто изменяются. К большим двоичным объектам можно обращаться по URL-адресам в следующем формате: http://storageaccount.blob.core.windows.net/<container>/<blob>
.
Вопросы оплаты Azure
Оценка затрат на использование служб Azure — это важный вопрос, который необходимо учитывать в процессе принятия решения и планирования. При хранении файлов данных SQL Server в хранилище Azure оплачивается стоимость использования хранилища и выполнения транзакций. Кроме того, реализация компонента SQL Server Data Files в службе хранилища Azure требует неявного возобновления аренды большого двоичного объекта каждые 45–60 секунд. При этом также возникают затраты на транзакции для каждого файла базы данных, например, MDF или LDF. По нашим оценкам в соответствии с текущей моделью расценок стоимость продления аренды для двух файлов базы данных (MDF и LDF) составит около двух центов в месяц. Рекомендуется использовать информацию на странице Тарифы Azure для оценки ежемесячных затрат, связанных с использованием службы хранилища Azure и виртуальных машин Azure.
Основные понятия SQL Server
При использовании этого нового компонента необходимо выполнить следующие действия.
Необходимо создать политику для контейнера, а также сформировать ключ подписи общего доступа.
Для каждого контейнера, используемого файлом данных или журнала, необходимо создать учетные данные SQL Server, имя которых соответствует пути контейнера.
Необходимо хранить сведения о контейнере службы хранилища Azure, связанную с ним политику и ключ SAS в хранилище учетных данных SQL Server.
В следующем примере предполагается, что контейнер службы хранилища Azure создан и политика с правами на чтение, запись, список. При создании политики для контейнера формируется ключ SAS, который безопасно размещать в памяти в незашифрованном виде. SQL Server использует этот ключ для доступа к файлам больших двоичных объектов в контейнере. В следующем фрагменте кода замените 'your SAS key'
на запись следующего вида: 'sr=c&si=<MYPOLICYNAME>&sig=<THESHAREDACCESSSIGNATURE>'
. Дополнительные сведения см. в статье Создание и использование подписанного URL-адреса.
-- Create a credential
CREATE CREDENTIAL [https://testdb.blob.core.windows.net/data]
WITH IDENTITY='SHARED ACCESS SIGNATURE',
SECRET = 'your SAS key'
-- Create database with data and log files in Azure container.
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 необходимо учитывать следующие требования и вопросы безопасности.
При создании контейнера для службы хранилища больших двоичных объектов Azure рекомендуется установить для него закрытые права доступа. При выборе частного типа доступа данные контейнера и больших двоичных объектов могут быть прочитаны только владельцем учетной записи Azure.
При хранении файлов базы данных SQL Server в службе хранилища Azure необходимо использовать подписанный URL-адрес (URI, который предоставляет ограниченные права доступа к контейнерам, большим двоичным объектам, очередям и таблицам). С помощью подписанного URL-адреса можно обеспечить SQL Server возможность доступа к ресурсам из учетной записи без предоставления доступа к ключу учетной записи службы хранилища Azure.
Кроме того, рекомендуется продолжать использовать стандартные методы обеспечения безопасности локальных баз данных.
Предварительные требования для установки
Ниже приведены предварительные требования для установки при хранении файлов данных SQL Server в Azuree.
Локальный SQL Server. Версия SQL Server 2014 включает этот компонент. Чтобы узнать, как загрузить SQL Server 2014, см. раздел SQL Server 2014.
SQL Server, выполняемый на виртуальной машине Azure. Если вы устанавливаете SQL Server на виртуальную машину Azure, установите SQL Server 2014 или обновите существующий экземпляр. Аналогичным образом можно создать виртуальную машину в Azure с помощью образа платформы SQL Server 2014. Чтобы узнать, как загрузить SQL Server 2014, см. раздел SQL Server 2014.
Ограничения
В текущем выпуске этой функции хранение
FileStream
данных в службе хранилища Azure не поддерживается. Данные можно хранитьFilestream
в локальной базе данных, интегрированной в службу хранилища Azure, но нельзя перемещать данные файлового потока между компьютерами с помощью службы хранилища Azure. Для данных типаFileStream
рекомендуется продолжать использовать стандартные методы переноса файлов MDF и LDF, связанных с Filestream, между разными компьютерами.Сейчас этот новый модуль не поддерживает одновременный доступ нескольких экземпляров SQL Server к одним и тем же файлам базы данных в службе хранилища Azure. Если Сервер А находится в сети с активным файлом базы данных и сервер ServerB был случайно запущен и у него также есть база данных, указывающая на тот же файл данных, второй сервер не сможет запустить базу данных с кодом ошибки 5120 Не удалось открыть физический файл "%.*ls". Ошибка операционной системы %d: "%ls".
Только MDF-, LDF- и NDF-файлы могут храниться в службе хранилища Azure с использованием компонента SQL Server Data Files в Azure.
При использовании компонента SQL Server Data Files в Azure георепликация для учетной записи не поддерживается. Если в учетной записи работает георепликация и была выполнена географическая отработка отказа, может произойти повреждение базы данных.
Размер каждого большого двоичного объекта может быть вплоть до 1 ТБ. Это значение формирует верхний предел для отдельных файлов данных и файлов журнала базы данных, которые могут храниться в службе хранилища Azure.
Невозможно сохранить данные выполняющейся в памяти OLTP в большом двоичном объекте Azure с помощью компонента SQL Server Data Files в Azure. Это связано с тем, что In-Memory OLTP имеет зависимость
FileStream
от и в текущем выпуске этой функции хранениеFileStream
данных в службе хранилища Azure не поддерживается.При использовании функции SQL Server файлов данных в Azure SQL Server выполняет все сравнения URL-адресов или путей к файлам с помощью набора параметров сортировки
master
в базе данных.AlwaysOn Availability Groups
поддерживается до тех пор, пока в основную базу данных не будут добавлены новые файлы базы данных. Если для выполнения операции базы данных требуется создание нового файла в базе данных-источнике, сначала отключите группы доступности AlwaysOn на вторичном узле. Затем выполните операцию базы данных в базе данных-источнике и создайте резервную копию базы данных на основном узле. Затем восстановите базу данных на вторичный узел и включите группы доступности AlwaysOn на вторичном узле. Обратите внимание, что экземпляры отказоустойчивого кластера AlwaysOn не поддерживаются при использовании функции SQL Server файлов данных в Azure.При обычной работе SQL Server использует временные аренды, чтобы зарезервировать большие двоичные объекты для хранения с возобновлением аренды каждого большого двоичного объекта каждые 45–60 секунд. Если происходит сбой сервера и запускается другой экземпляр SQL Server, который настроен для использования тех же больших двоичных объектов, новый экземпляр будет ждать окончания аренды для большого двоичного объекта вплоть до 60 секунд. Если необходимо присоединить базу данных к другому экземпляру и ждать окончания срока аренды в течение 60 секунд невозможно, то можно явно прервать аренду большого двоичного объекта, чтобы избежать сбоев операций присоединения.
Средства и справочник по программированию
В этом разделе описаны средства и библиотеки справочных материалов по программированию, которые можно использовать при хранении файлов данных SQL Server в службе хранилища Azure.
Поддержка PowerShell
В SQL Server 2014 можно использовать командлеты PowerShell для хранения SQL Server файлов данных в службе Хранилище BLOB-объектов Azure путем ссылки на URL-адрес хранилища BLOB-объектов, а не на путь к файлу. К большим двоичным объектам можно обращаться по URL-адресам в следующем формате: http://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 позволяет использовать этот компонент с помощью нескольких диалоговых окон. Например, можно ввести URL-адрес контейнера хранилища, скажем, https://teststorageaccnt.blob.core.windows.net/testcontainer/
в поле Путь в нескольких разных диалоговых окнах ( Создание базы данных, Присоединение базы данныхи Восстановление базы данных). Дополнительные сведения см. в статье Руководство по SQL Server файлов данных в службе хранилища Azure.
Поддержка управляющих объектов SQL Server
При использовании компонента 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:
- Новый столбец int , credential_id, в системном представлении sys.master_files . Столбец credential_id используется для обеспечения указания перекрестных ссылок на файлы данных из хранилища Azure назад в представление sys.credentials для учетных данных, созданных для них. Это можно использовать для устранения неполадок, например, когда невозможно удалить учетные данные при наличии файла базы данных, который использует их.
Устранение неполадок с файлами данных SQL Server в Azure
Для избежания ошибок в связи с не поддерживаемыми функциями или ограничениями, обратитесь сначала к Limitations.
Далее приведен список ошибок, которые могут быть получены при использовании SQL Server Data Files в службе хранилища Azure.
Ошибки проверки подлинности
Не удается удалить учетные данные "%.*ls", так как они используются активным файлом базы данных.
Способы устранения: Эта ошибка отображается при попытке удалить учетные данные, которые используются активным файлом базы данных в службе хранилища Azure. Чтобы удалить учетные данные, необходимо сначала удалить сопоставленный большой двоичный объект, которому принадлежит этот файл базы данных. Чтобы удалить большой двоичный объект с активной арендой, сначала необходимо прервать аренду.Подписанный URL-адрес был создан в контейнере неправильно.
Способы устранения: Убедитесь, что вы создали подпись общего доступа для контейнера правильно. Ознакомьтесь с инструкциями, приведенными в уроке 2 статьи Руководство по SQL Server файлов данных в службе хранилища Azure.Учетные данные SQL Server созданы неправильно.
Способы устранения: Убедитесь, что в поле Идентификатор указано значение "Подписанный URL-адрес" и секрет сформирован правильно. Ознакомьтесь с инструкциями, приведенными в уроке 3 руководства по SQL Server файлов данных в службе хранилища Azure.
Ошибки аренды больших двоичных объектов
- Ошибка при попытке запустить SQL Server после сбоя другого экземпляра, использующего те же файлы больших двоичных объектов. Решение. При обычной работе SQL Server использует временные аренды, чтобы зарезервировать большие двоичные объекты для хранения с возобновлением аренды каждого большого двоичного объекта каждые 45–60 секунд. Если происходит сбой сервера и запускается другой экземпляр SQL Server, который настроен для использования тех же больших двоичных объектов, новый экземпляр будет ждать окончания аренды для большого двоичного объекта вплоть до 60 секунд. Если необходимо присоединить базу данных к другому экземпляру и ждать окончания срока аренды в течение 60 секунд невозможно, то можно явно прервать аренду большого двоичного объекта, чтобы избежать сбоев операций присоединения.
Ошибки базы данных
Ошибка создания базы данных
Решение. Ознакомьтесь с инструкциями, приведенными в уроке 4 руководства по SQL Server файлов данных в службе хранилища Azure.Ошибки при выполнении инструкции Alter
Способы устранения: Инструкцию Alter необходимо выполнять, когда база данных находится в режиме "в сети". При копировании файлов данных в службу хранилища Azure всегда создавайте страничный, а не блочный большой двоичный объект. В противном случае инструкция ALTER для базы данных завершится ошибкой. Ознакомьтесь с инструкциями, приведенными в уроке 7 руководства по SQL Server файлов данных в службе хранилища Azure.Код ошибки 5120. Не удалось открыть физический файл "%.*ls". Ошибка операционной системы %d: "%ls"
Способы устранения: Сейчас этот новый модуль не поддерживает одновременный доступ нескольких экземпляров SQL Server к одним и тем же файлам базы данных в службе хранилища Azure. Если Сервер А находится в сети с активным файлом базы данных и сервер ServerB был случайно запущен и у него также есть база данных, указывающая на тот же файл данных, второй сервер не сможет запустить базу данных с кодом ошибки 5120 Не удалось открыть физический файл "%.*ls". Ошибка операционной системы %d: "%ls".Чтобы устранить эту проблему, необходимо сначала определить, есть ли у ServerA доступ к файлу базы данных, который находится в службе хранилища Azure. Если нет, просто удалите все связи между ServerA и файлами базы данных из службы хранилища Azure. Для этого выполните следующие действия.
С помощью инструкции ALTER установите для ServerA пути к файлам из локальных папок.
Переведите базу данных на ServerA в режим «вне сети».
Затем скопируйте файлы базы данных из службы хранилища Azure в локальную папку на ServerA. Это гарантирует, что ServerA по-прежнему будет иметь локальную копию базы данных.
Переведите базу данных в режим «в сети».
См. также:
Руководство по Файлы данных SQL Server в службе хранилища Azure