Различия T-SQL между SQL Server и Управляемым экземпляром SQL Azure
Область применения: Управляемый экземпляр SQL Azure
В этой статье приведены и объяснены различия в синтаксисе и поведении между Управляемым экземпляром SQL Azure и SQL Server.
Управляемый экземпляр SQL обеспечивает высокую совместимость с ядром СУБД SQL Server, и большинство функций поддерживается в Управляемом экземпляре SQL.
Существуют некоторые ограничения PaaS, появившиеся в Управляемом экземпляре SQL, а также некоторые изменения в поведении по сравнению с SQL Server. Эти различия делятся на следующие категории:
- Доступность, включая различия в группах доступности Always On и резервных копиях.
- Безопасность, включая различия в аудите, сертификатах, учетных данных, поставщиках услуг шифрования, именах входа и пользователях, а также ключе службы и главном ключе службы.
- Конфигурация, включая различия в расширении буферного пула, параметрах сортировки, уровнях совместимости, зеркальном отображении баз данных, параметрах баз данных, агенте SQL Server и параметрах таблиц.
- Функциональные возможности, включая BULK INSERT или OPENROWSET, поддержку среды CLR, DBCC, распределенные транзакции, расширенные события, внешние библиотеки, файловый поток и FileTable, полнотекстовый семантический поиск, связанные серверы, PolyBase, репликацию, инструкцию RESTORE, Service Broker, хранимые процедуры, функции и триггеры.
- Параметры среды, включая конфигурацию виртуальных сетей и подсети.
Большинство этих функций являются ограничениями архитектуры и представляют функции служб.
Временные известные проблемы, которые обнаружены в Управляемом экземпляре SQL и будут разрешены в дальнейшем, описаны на странице Что нового?.
Доступность
Группы доступности AlwaysOn
Высокий уровень доступности встроен в Управляемый экземпляр SQL, и пользователи не могут им управлять. Не поддерживаются следующие инструкции:
- CREATE ENDPOINT … ДЛЯ DATABASE_MIRRORING
- CREATE AVAILABILITY GROUP
- ALTER AVAILABILITY GROUP
- DROP AVAILABILITY GROUP
- Предложение SET HADR инструкции ALTER DATABASE.
Backup
Для Управляемого экземпляра SQL Azure предусмотрено автоматическое резервное копирование, и пользователи могут создавать полные резервные копии базы данных COPY_ONLY
. Разностное резервное копирование, а также резервное копирование журналов и моментальных снимков файлов не поддерживаются.
- С помощью Управляемого экземпляра SQL вы можете выполнить резервное копирование базы данных экземпляра только в учетную запись хранения больших двоичных объектов Azure.
- Поддерживается только
BACKUP TO URL
. FILE
,TAPE
и устройства резервного копирования не поддерживаются.
- Поддерживается только
- Большинство общих параметров
WITH
поддерживаются.COPY_ONLY
обязателен.FILE_SNAPSHOT
иCREDENTIAL
не поддерживаются.- Параметры ленты:
REWIND
,NOREWIND
,UNLOAD
иNOUNLOAD
не поддерживаются. - Параметры журналов:
NORECOVERY
,STANDBY
иNO_TRUNCATE
не поддерживаются.
Ограничения
С помощью Управляемого экземпляра SQL вы можете выполнять резервное копирование в базу данных экземпляра, содержащую до 32 полосковых линий. Такого количества достаточно для баз данных объемом до 4 ТБ, если используется сжатие резервных копий.
Невозможно выполнить
BACKUP DATABASE ... WITH COPY_ONLY
с базой данных, зашифрованной с использованием управляемого службой прозрачного шифрования данных (TDE). Управляемые службой TDE заставляет шифровать резервные копии с помощью внутреннего ключа TDE. Этот ключ не может быть экспортирован, поэтому восстановить резервную копию невозможно. Используйте автоматическое резервное копирование и восстановление на момент времени или используйте TDE, управляемое клиентом (BYOK). Также можно отключить шифрование базы данных.Собственные резервные копии, сделанные на Управляемый экземпляр SQL, можно восстановить только в экземпляре SQL Server 2022. Это связано с тем, что Управляемый экземпляр SQL имеет более высокую внутреннюю версию базы данных по сравнению с другими версиями SQL Server. Дополнительные сведения см. в статье Восстановление резервной копии базы данных Управляемый экземпляр SQL до SQL Server 2022 г.
Чтобы выполнить резервное копирование или восстановление базы данных в хранилище Azure или из нее, можно пройти проверку подлинности с помощью управляемого удостоверения или подписанного URL-адреса (SAS), который представляет собой универсальный код ресурса (URI), который предоставляет ограниченные права доступа к ресурсам службы хранилища Azure Подробнее об этом. Использование ключей доступа в этих сценариях не поддерживается.
Максимальный размер полосы резервного копирования с помощью команды
BACKUP
в Управляемом экземпляре SQL составляет 195 ГБ, что является максимальным размером большого двоичного объекта. Чтобы уменьшить размер отдельного чередующегося набора и соблюсти это ограничение, можно увеличить число чередующихся наборов в команде резервного копирования.Совет
Чтобы обойти это ограничение, при резервном копировании базы данных из SQL Server в локальной среде или на виртуальной машине можно выполнить следующие действия.
- Создать резервную копию на
DISK
вместо резервного копирования наURL
. - Отправить скопированные файлы в хранилище BLOB-объектов.
- Восстановить в Управляемый экземпляр SQL.
Команда
Restore
в Управляемом экземпляре SQL поддерживает более крупные размеры больших двоичных объектов в файлах резервных копий, так как для хранения переданных файлов резервных копий используется другой тип больших двоичных объектов.- Создать резервную копию на
Сведения о резервном копировании с помощью T-SQL см. в статье BACKUP (Transact-SQL).
Безопасность
Аудит
Ниже перечислены основные различия между аудитом в Microsoft Azure SQL и SQL Server.
- В Управляемом экземпляре SQL компонент аудита выполняется на уровне сервера. Файлы журнала
.xel
сохраняются в хранилище BLOB-объектов Azure. - В Базе данных SQL Azure аудит выполняется на уровне базы данных. Файлы журнала
.xel
сохраняются в хранилище BLOB-объектов Azure. - В локальных или виртуальных машинах SQL Server аудит выполняется на уровне сервера. События хранятся в файловой системе или в журналах событий Windows.
Аудит XEvent в Управляемом экземпляре SQL поддерживает целевые расположения хранилища больших двоичных объектов Azure. Журналы файловой системы и журналы Windows не поддерживаются.
Основные различия в синтаксисе CREATE AUDIT
для аудита в хранилище BLOB-объектов Azure:
- Предоставляется новый синтаксис
TO URL
для указания URL-адреса контейнера хранилища BLOB-объектов Azure, в котором.xel
размещаются файлы. - Синтаксис
TO FILE
не поддерживается, так как Управляемый экземпляр SQL не может использовать общие папки Windows.
Дополнительные сведения см. в разделе:
Сертификаты
Управляемый экземпляр SQL не может получить доступ к общим папкам и папкам Windows, поэтому действуют следующие ограничения.
- Файл
CREATE FROM
/BACKUP TO
не поддерживается для сертификатов. - Сертификат
CREATE
/BACKUP
изFILE
/ASSEMBLY
не поддерживается. Невозможно использовать файлы закрытых ключей.
См. статьи Инструкция CREATE CERTIFICATE (Transact-SQL) и BACKUP CERTIFICATE (Transact-SQL).
Обходной путь. Вместо создания резервной копии сертификата и восстановления резервной копии получите содержимое двоичного файла сертификата и закрытый ключ, сохраните его в виде файла .sql и создайте из двоичного файла:
CREATE CERTIFICATE
FROM BINARY = asn_encoded_certificate
WITH PRIVATE KEY (<private_key_options>)
Учетные данные
Поддерживаются управляемые удостоверения, Key Vault Azure и SHARED ACCESS SIGNATURE
удостоверения. Пользователи Windows не поддерживаются.
См. статьи CREATE CREDENTIAL (Transact-SQL) и ALTER CREDENTIAL (Transact-SQL).
Поставщики служб шифрования
Управляемый экземпляр SQL не может получить доступ к файлам, поэтому невозможно создать поставщики служб шифрования.
CREATE CRYPTOGRAPHIC PROVIDER
не поддерживается. См. статью CREATE CRYPTOGRAPHIC PROVIDER (Transact-SQL).ALTER CRYPTOGRAPHIC PROVIDER
не поддерживается. См. статью ALTER CRYPTOGRAPHIC PROVIDER (Transact-SQL).
Имена входа и пользователи
Поддерживаются имена входа SQL, созданные с помощью
FROM CERTIFICATE
,FROM ASYMMETRIC KEY
иFROM SID
. См. статью CREATE LOGIN (Transact-SQL).Субъекты сервера (имена для входа) Azure Active Directory (Azure AD), созданные с помощью синтаксиса CREATE LOGIN или CREATE USER FROM LOGIN [имя для входа Azure AD], поддерживаются. Это имена для входа, созданные на уровне сервера.
Управляемый экземпляр SQL поддерживает субъекты базы данных Azure AD, созданные с помощью синтаксиса
CREATE USER [AADUser/AAD group] FROM EXTERNAL PROVIDER
. Они также называются пользователями автономной базы данных Azure AD.Имена для входа Windows, созданные с помощью синтаксиса
CREATE LOGIN ... FROM WINDOWS
, не поддерживаются. Используйте пользователей и имена для входа Azure Active Directory.Пользователь Azure AD с правами администратора обладает неограниченными правами администратора.
Пользователей уровня базы данных Azure AD без прав администратора можно создавать, используя синтаксис
CREATE USER ... FROM EXTERNAL PROVIDER
. См. инструкцию CREATE USER ... FROM EXTERNAL PROVIDER.Некоторые функции не поддерживают использование Azure AD субъектов сервера (имен входа) при взаимодействии между экземплярами, но только в пределах одного Управляемый экземпляр SQL. Примером такой функции является репликация SQL. Функция связанного сервера поддерживает проверку подлинности между экземплярами с использованием Azure AD субъектов сервера (имен входа).
Установка имени для входа Azure AD, сопоставленного с группой Azure AD, в качестве владельца базы данных, не поддерживается. Член группы Azure AD может являться владельцем базы данных, даже если для него не создано имя входа в этой базе данных.
Олицетворение субъектов серверного уровня Azure AD с помощью других субъектов Azure AD поддерживается, включая предложение EXECUTE AS. Ограничения EXECUTE AS:
EXECUTE AS USER не поддерживается для пользователей Azure AD, если имя отличается от имени для входа. Например, если для создания пользователя использован синтаксис
CREATE USER [myAadUser] FROM LOGIN [john@contoso.com]
, после чего производится попытка олицетворения с помощью синтаксисаEXEC AS USER = myAadUser
. При создании USER на основе субъекта сервера (имени для входа) Azure AD необходимо указать user_name (имя пользователя), совпадающее с login_name (имя для входа) из LOGIN.Только субъекты (имена для входа) уровня SQL Server, которые являются частью роли
sysadmin
, могут выполнять следующие операции, предназначенные для субъектов Azure AD:- EXECUTE AS USER;
- EXECUTE AS LOGIN.
Чтобы олицетворить пользователя с помощью инструкции EXECUTE AS, его необходимо сопоставить непосредственно с Azure AD субъектом сервера (login). Пользователей, которые являются членами групп Azure AD, сопоставленных с субъектами сервера Azure AD, невозможно эффективно олицетворять с помощью инструкции EXECUTE AS, даже если вызывающий обладает разрешениями на олицетворение для указанного имени пользователя.
Экспорт и импорт базы данных с использованием BACPAC-файлов поддерживается для пользователей Azure AD в Управляемый экземпляр SQL, использующих SSMS версии 18.4 или более поздней версии или SqlPackage.
- Следующие конфигурации поддерживаются с использованием BACPAC-файла базы данных.
- Экспорт и импорт базы данных между разными управляемыми экземплярами в пределах одного домена Azure AD.
- Экспорт базы данных из Управляемого экземпляра SQL и импорт ее в базу данных SQL в том же домене Azure AD.
- Экспорт базы данных из базы данных SQL и импорт ее в Управляемый экземпляр SQL в том же домене Azure AD.
- Экспорт базы данных из Управляемого экземпляра SQL и импорт в SQL Server (версии 2012 или более поздней).
- В этой конфигурации все пользователи Azure AD создаются как субъекты базы данных SQL Server (пользователи) без имен для входа. Тип пользователей —
SQL
и отображается какSQL_USER
вsys.database_principals
. Их разрешения и роли остаются в метаданных базы данных SQL Server и могут использоваться для олицетворения. Но их нельзя использовать для доступа к SQL Server и входа в него с помощью учетных данных пользователей.
- В этой конфигурации все пользователи Azure AD создаются как субъекты базы данных SQL Server (пользователи) без имен для входа. Тип пользователей —
- Следующие конфигурации поддерживаются с использованием BACPAC-файла базы данных.
Только имя входа на уровне сервера, созданное в процессе подготовки Управляемый экземпляр SQL, члены ролей сервера, такие как
securityadmin
илиsysadmin
, или другие имена входа с разрешением ALTER ANY LOGIN на уровне сервера, могут создавать Azure AD субъектов сервера (имен входа) вmaster
базе данных для Управляемый экземпляр SQL.Если имя для входа представляет собой субъект SQL, команду create для создания имен для входа для учетной записи Azure AD можно использовать только с именами для входа, которые являются частью роли
sysadmin
.Имя входа Azure AD должно быть членом Azure AD в том же каталоге, который используется для Управляемый экземпляр SQL Azure.
Субъекты сервера (имена для входа) Azure AD отображаются в обозревателе объектов, начиная с предварительной версии 5 SQL Server Management Studio 18.0.
Субъект сервера с уровнем доступа sysadmin автоматически создается для учетной записи администратора Azure AD, как только она включается для экземпляра.
Во время аутентификации для проверки подлинности субъекта применяется следующая последовательность:
- Если существующая учетная запись Azure AD напрямую сопоставлена с субъектом сервера (именем для входа) Azure AD (указанным в
sys.server_principals
как тип "E"), предоставляется доступ и применяются разрешения субъекта сервера (имени для входа) Azure AD. - Если существующая учетная запись Azure AD входит в группу Azure AD, которая сопоставлена с субъектом сервера (именем для входа) Azure AD (указанным в
sys.server_principals
как тип "X"), предоставляется доступ и применяются разрешения имени для входа группы Azure AD. - Если существующая учетная запись Azure AD напрямую сопоставлена с пользователем Azure AD в базе данных (указанным в
sys.database_principals
как тип "E"), предоставляется доступ и применяются разрешения пользователя базы данных Azure AD. - Если учетная запись Azure AD входит в группу Azure AD, сопоставленную с пользователем Azure AD в базе данных (указанным в
sys.database_principals
как тип "X"), предоставляется доступ и применяются разрешения для пользователя из группы Azure AD.
- Если существующая учетная запись Azure AD напрямую сопоставлена с субъектом сервера (именем для входа) Azure AD (указанным в
Ключ службы и главный ключ службы
- Резервное копирование главного ключа не поддерживается (управляется службой базы данных SQL).
- Восстановление главного ключа не поддерживается (управляется службой базы данных SQL).
- Резервное копирование главного ключа службы не поддерживается (управляется службой базы данных SQL).
- Восстановление главного ключа службы не поддерживается (управляется службой базы данных SQL).
Конфигурация
Расширение буферного пула
- Расширение буферного пула не поддерживается.
ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION
не поддерживается. См. статью ALTER SERVER CONFIGURATION (Transact-SQL).
Параметры сортировки
Параметр сортировки экземпляра по умолчанию — SQL_Latin1_General_CP1_CI_AS
. Этот параметр можно указать как параметр создания. См. статью Параметры сортировки.
Уровни совместимости
- Поддерживаемые уровни совместимости: 100, 110, 120, 130, 140, 150 и 160.
- Уровни совместимости ниже 100 не поддерживаются.
- Уровень совместимости по умолчанию для новых баз данных — 150. Для восстановленных баз данных уровень совместимости остается неизменным, если он был 100 и выше.
См. статью Уровень совместимости инструкции ALTER DATABASE (Transact-SQL)
Зеркальное отображение базы данных
Зеркальное отображение базы данных не поддерживается.
- Параметры
ALTER DATABASE SET PARTNER
иSET WITNESS
не поддерживаются. CREATE ENDPOINT … FOR DATABASE_MIRRORING
не поддерживается.
Дополнительные сведения см. в статьях Зеркальное отображение базы данных ALTER DATABASE (Transact-SQL) и CREATE ENDPOINT (Transact-SQL).
Параметры базы данных
- Несколько файлов журнала не поддерживаются.
- Объекты в памяти не поддерживаются на уровне служб "Общего назначения".
- Существует ограничение в 280 файлов на экземпляр общего назначения, что подразумевает максимум 280 файлов на одну базу данных. Это ограничение распространяется на файлы данных и файлы журнала на уровне "Общего назначения". Уровень "Критически важный для бизнеса" поддерживает 32 767 файлов на базу данных.
- База данных не может содержать файловые группы, содержащие данные файлового потока. Восстановление завершится со сбоем, если BAK-файл содержит данные
FILESTREAM
. - Каждый файл помещается в хранилище BLOB-объектов Azure. Операции ввода-вывода и пропускная способность каждого файла зависят от размера каждого файла.
Инструкция CREATE DATABASE
К CREATE DATABASE
применяются следующие ограничения:
Невозможно определить файлы и файловые группы.
Оптимизированная для памяти файловая группа и файл автоматически добавляются и называются XTP.
Параметр
CONTAINMENT
не поддерживается.Параметры
WITH
не поддерживаются.Совет
Чтобы обойти эту проблему, используйте
ALTER DATABASE
послеCREATE DATABASE
, чтобы задать параметры базы данных для добавления файлов или задать вложение.Параметр
FOR ATTACH
не поддерживается.Параметр
AS SNAPSHOT OF
не поддерживается.
Дополнительные сведения см. в статье CREATE DATABASE (SQL Server Transact-SQL).
Инструкция ALTER DATABASE
Невозможно задать или изменить некоторые свойства файла:
- Путь к файлу невозможно указать в инструкции T-SQL
ALTER DATABASE ADD FILE (FILENAME='path')
. УдалитеFILENAME
из сценария, так как Управляемый экземпляр SQL автоматически размещает файлы. - Имя файла нельзя изменить путем использованием инструкции
ALTER DATABASE
. - Изменение XTP-файла или файловой группы запрещено.
Следующие параметры задаются по умолчанию и не могут быть изменены.
MULTI_USER
ENABLE_BROKER
AUTO_CLOSE OFF
Невозможно изменить следующие параметры:
AUTO_CLOSE
AUTOMATIC_TUNING(CREATE_INDEX=ON|OFF)
AUTOMATIC_TUNING(DROP_INDEX=ON|OFF)
DISABLE_BROKER
EMERGENCY
ENABLE_BROKER
FILESTREAM
HADR
NEW_BROKER
OFFLINE
PAGE_VERIFY
PARTNER
READ_ONLY
RECOVERY BULK_LOGGED
RECOVERY_SIMPLE
REMOTE_DATA_ARCHIVE
RESTRICTED_USER
SINGLE_USER
WITNESS
Некоторые ALTER DATABASE
инструкции (например, SET CONTAINMENT) могут в течение короткого времени завершаться сбоем, например во время автоматического резервного копирования базы данных или сразу после создания базы данных. В этом случае инструкцию ALTER DATABASE
следует повторить. Дополнительные сведения о связанных сообщениях об ошибках см. в разделе "Комментарии".
Дополнительные сведения см. в статье Параметры инструкции ALTER DATABASE для файлов и файловых групп (Transact-SQL).
Агент SQL Server
- Включение и отключение агента SQL Server в настоящее время не поддерживается для Управляемого экземпляра SQL. Агент SQL работает всегда.
- Триггер задания по расписанию на основе бездействующего ЦП не поддерживается.
- Параметры агента SQL Server доступны только для чтения. Процедура
sp_set_agent_properties
не поддерживается в Управляемом экземпляре SQL. - Задания
- Шаги задания T-SQL поддерживаются.
- Поддерживаются следующие задания репликации:
- Читатель журнала транзакций.
- Моментальный снимок
- Распространитель
- Шаги задания SSIS поддерживаются.
- Другие типы шагов заданий пока не поддерживаются:
- Шаг задания репликации слиянием не поддерживается.
- Читатель очереди пока не поддерживается.
- Командная оболочка пока не поддерживается.
- Управляемый экземпляр SQL не может получить доступ к внешним ресурсам, например к сетевым папкам, с помощью robocopy.
- Службы SQL Server Analysis Services не поддерживаются.
- Уведомления поддерживаются частично.
- Уведомления электронной почты поддерживаются, хотя для этого необходимо настроить профиль Database Mail. SQL Server Agent может использовать только один профиль компонента Database Mail, и ему должно быть присвоено имя
AzureManagedInstance_dbmail_profile
.- Пейджер не поддерживается.
- NetSend не поддерживается.
- Оповещения еще не поддерживаются.
- Прокси-серверы не поддерживаются.
- Журнал событий EventLog не поддерживается.
- Для создания, изменения или выполнения заданий агента SQL пользователя необходимо напрямую сопоставить с субъектом сервера Azure AD (именем для входа). Пользователи, которые не сопоставлены напрямую, например пользователи, которые принадлежат к группе Azure AD, обладающей правами на создание, изменение или выполнение заданий агента SQL, фактически не смогут выполнять эти действия. Это объясняется олицетворением Управляемого экземпляра SQL и ограничениями EXECUTE AS.
- Возможность многосерверного администрирования для заданий главного и целевого серверов (MSX/TSX) не поддерживается.
Сведения об агенте SQL Server см. в статье Агент SQL Server.
Таблицы
Следующие типы таблиц не поддерживаются:
- FILESTREAM
- FILETABLE
- EXTERNAL TABLE (кроме PolyBase)
- MEMORY_OPTIMIZED (не поддерживается только на уровне "Общего назначения")
Сведения о создании и изменении таблиц см. в статьях о CREATE TABLE и ALTER TABLE.
Функциональные возможности
Массовая вставка / OPENROWSET
Управляемый экземпляр SQL не может получить доступ к общим папкам и папкам Windows, поэтому файлы необходимо импортировать из хранилища больших двоичных объектов Azure.
- Во время импорта файлов из хранилища BLOB-объектов Azure
DATASOURCE
является обязательным в командеBULK INSERT
. См. статью BULK INSERT (Transact-SQL). - При считывании содержимого файла из хранилища BLOB-объектов Azure
DATASOURCE
является обязательным в функцииOPENROWSET
. См. статью OPENROWSET (Transact-SQL). OPENROWSET
можно использовать для чтения данных из Базы данных SQL Azure, Управляемого экземпляра SQL Azure или экземпляров SQL Server. Другие источники, такие как базы данных Oracle или файлы Excel, не поддерживаются.
CLR
Управляемый экземпляр SQL не может получить доступ к общим папкам и папкам Windows, поэтому действуют следующие ограничения.
- Поддерживается только
CREATE ASSEMBLY FROM BINARY
. См. статью CREATE ASSEMBLY (Transact-SQL). CREATE ASSEMBLY FROM FILE
не поддерживается. См. статью CREATE ASSEMBLY (Transact-SQL).ALTER ASSEMBLY
не может ссылаться на файлы. См. статью ALTER ASSEMBLY (Transact-SQL).
Database Mail (db_mail)
sp_send_dbmail
не может отправлять вложения с помощью параметра @file_attachments. Локальная файловая система и внешние общие папки или хранилище BLOB-объектов Azure недоступны из этой процедуры.- Ознакомьтесь с известными проблемами, связанными с параметром
@query
и проверкой подлинности.
DBCC
Недокументированные инструкции DBCC, которые включены в SQL Server, не поддерживаются в Управляемом экземпляре SQL.
- Поддерживается только ограниченное число глобальных флагов трассировки.
Trace flags
уровня сеанса не поддерживаются. См. статью Флаги трассировки. - Команды консоли базы данных TRACEOFF и TRACEON работают с ограниченным числом глобальных флагов трассировки.
- Команда CHECKDB с параметрами REPAIR_ALLOW_DATA_LOSS, REPAIR_FAST и REPAIR_REBUILD не может быть использована, так как база данных не может быть задана в режиме
SINGLE_USER
. См. Различия в ALTER DATABASE. Потенциальное повреждение базы данных обрабатывается группой поддержки Azure. При наличии каких-либо признаков повреждения базы данных свяжитесь с поддержкой Azure.
Распределенные транзакции
Распределенные транзакции на основе T-SQL и .NET между управляемыми экземплярами являются общедоступными . Другие сценарии, такие как транзакции XA, распределенные транзакции между управляемыми экземплярами и другими участниками и т. д., поддерживаются с DTC для Управляемый экземпляр SQL Azure, которая доступна в общедоступной предварительной версии.
Расширенные события
Некоторые из целевых объектов Windows для расширенных событий (XEvents) не поддерживаются:
- Целевой объект
etw_classic_sync
не поддерживается. Храните файлы.xel
в хранилище BLOB-объектов Azure. См. раздел Целевой объект etw_classic_sync_target. - Целевой объект
event_file
не поддерживается. Храните файлы.xel
в хранилище BLOB-объектов Azure. См. раздел Целевой объект event_file.
Внешние библиотеки
Внешние библиотеки R и Python в базе данных поддерживаются в ограниченной общедоступной предварительной версии. См. Службы машинного обучения в Управляемом экземпляре SQL Azure (предварительная версия).
Filestream и FileTable
- Данные файлового потока не поддерживаются.
- База данных не может содержать файловые группы с данными
FILESTREAM
. FILETABLE
не поддерживается.- Таблицы не могут содержать типы
FILESTREAM
. - Следующие функции не поддерживаются:
GetPathLocator()
GET_FILESTREAM_TRANSACTION_CONTEXT()
PathName()
GetFileNamespacePat)
FileTableRootPath()
Дополнительные сведения см. в статьях FILESTREAM (SQL Server) и Таблицы FileTable (SQL Server).
Полнотекстовый семантический поиск
Семантический поиск не поддерживается.
Связанные серверы
Связанные серверы в Управляемом экземпляре SQL поддерживают ограниченное число целевых объектов.
- Поддерживаемые целевые объекты: Управляемый экземпляр SQL, База данных SQL, бессерверный и выделенный пулы Azure Synapse SQL, а также экземпляры SQL Server.
- Неподдерживаемые целевые объекты: файлы, Analysis Services и другие реляционные СУБД. Попробуйте использовать собственный импорт CSV из Хранилища BLOB-объектов Azure с помощью
BULK INSERT
илиOPENROWSET
в качестве альтернативы для импорта файлов или загружать файлы с помощью бессерверного пула SQL в Azure Synapse Analytics.
Операции:
sp_dropserver
поддерживается для удаления связанного сервера. См. статью sp_dropserver (Transact-SQL).- Функцию
OPENROWSET
можно использовать для выполнения запросов только в экземплярах SQL Server. Они могут быть управляемыми, локальными, или расположенными на виртуальных машинах. См. статью OPENROWSET (Transact-SQL). - Функцию OPENDATASOURCE можно использовать для выполнения запросов только к экземплярам SQL Server. Они могут быть управляемыми, локальными, или расположенными на виртуальных машинах. Например,
SELECT * FROM OPENDATASOURCE('SQLNCLI', '...').AdventureWorks2012.HumanResources.Employee
.SQLNCLI
В качестве поставщика поддерживаются только значения ,SQLNCLI11
,SQLOLEDB
иMSOLEDBSQL
. SQL Server Native Client (часто сокращенно SNAC) удалена из SQL Server 2022 и SQL Server Management Studio 19 (SSMS). SQL Server Native Client (SQLNCLI или SQLNCLI11) и устаревший поставщик MICROSOFT OLE DB для SQL Server (SQLOLEDB) не рекомендуются для новой разработки. В дальнейшем перейдите на новый драйвер Microsoft OLE DB (MSOLEDBSQL) для SQL Server или последнюю версию Драйвера Microsoft ODBC для SQL Server. - Связанные серверы нельзя использовать для чтения файлов (Excel, CSV) из общих сетевых папок. Попробуйте использовать BULK INSERT, OPENROWSET, которые читают CSV-файлы из Хранилища BLOB-объектов Azure, или связанный сервер, который ссылается на бессерверный пул SQL в Synapse Analytics. Отслеживайте эти запросы в элементе обратной связи Управляемого экземпляра SQL
Связанные серверы Управляемого экземпляра SQL Azure поддерживают как проверку подлинности SQL, так и проверку подлинности Azure AD.
PolyBase
Виртуализация данных с помощью Управляемый экземпляр SQL Azure позволяет выполнять запросы Transact-SQL (T-SQL) к данным из файлов, хранящихся в Azure Data Lake Storage 2-го поколения или Хранилище BLOB-объектов Azure и объедините его с локально хранящимися реляционными данными с помощью соединений. Форматы файлов Parquet и разделенного текста (CSV) поддерживаются напрямую. Формат файлов JSON поддерживается косвенно путем указания формата файлов CSV, в котором запросы возвращают каждый документ в виде отдельной записи. Вы можете выполнить дополнительный анализ записей с помощью JSON_VALUE
и OPENJSON
. Общие сведения о Polybase см. в руководстве по PolyBase.
Кроме того, инструкция CREATE EXTERNAL TABLE AS SELECT (CETAS) позволяет экспортировать данные из управляемого экземпляра SQL во внешнюю учетную запись хранения. С помощью CETAS можно создать внешнюю таблицу поверх хранилища BLOB-объектов Azure parquet или CSV-файлов или Azure Data Lake Storage (ADLS) 2-го поколения. CETAS также может параллельно экспортировать результаты инструкции T-SQL SELECT в созданную внешнюю таблицу.
Репликация
- Поддерживаются моментальные снимки и двунаправленная репликация. Репликация слиянием, одноранговая репликация и обновляемые подписки не поддерживаются.
- Репликация транзакций доступна для Управляемый экземпляр SQL с некоторыми ограничениями:
- Все типы участников репликации (издатель, распространитель, подписчик по запросу и подписчик push-уведомлений) можно размещать в Управляемом экземпляре SQL, но издатель и распространитель должны быть либо в облаке, либо в локальной среде.
- Управляемый экземпляр SQL может взаимодействовать с последними версиями SQL Server. Дополнительные сведения см. в таблице поддерживаемых версий.
- У репликации транзакций есть некоторые дополнительные требования к сети.
Дополнительные сведения о настройке репликации транзакций см. в следующих учебниках:
- Репликация между издателем Управляемого экземпляра SQL и подписчиком Управляемого экземпляра SQL
- Репликация между издателем Управляемого экземпляра SQL, распространителем Управляемого экземпляра SQL и подписчиком SQL Server.
Инструкция RESTORE
- Поддерживаемый синтаксис:
RESTORE DATABASE
RESTORE FILELISTONLY ONLY
RESTORE HEADER ONLY
RESTORE LABELONLY ONLY
RESTORE VERIFYONLY ONLY
- Неподдерживаемый синтаксис:
RESTORE LOG ONLY
RESTORE REWINDONLY ONLY
- Источник:
FROM URL
(хранилище BLOB-объектов) — единственный поддерживаемый параметр.FROM DISK
/TAPE
или устройство резервного копирования не поддерживаются.- Резервные наборы данных не поддерживаются.
- Параметры
WITH
не поддерживаются. Попытки восстановления, включающиеWITH
,DIFFERENTIAL
,STATS
,REPLACE
и т. д., завершатся ошибкой. ASYNC RESTORE
: восстановление продолжится даже в случае разрыва соединения с клиентом. При разрыве соединения можно проверить представлениеsys.dm_operation_status
на предмет состояния операции восстановления (а также базы данных CREATE и DROP). См. статью sys.dm_operation_status (база данных SQL Azure).
Следующие параметры базы данных задаются или переопределяются и не могут быть потом изменены:
NEW_BROKER
если брокер не включен в BAK-файле.ENABLE_BROKER
если брокер не включен в BAK-файле.AUTO_CLOSE=OFF
если база данных в BAK-файле содержитAUTO_CLOSE=ON
.RECOVERY FULL
если база данных в BAK-файле содержит режим восстановленияSIMPLE
илиBULK_LOGGED
.- Добавляется оптимизированная для операций в памяти файловая группа, которой присваивается имя XTP, если она не содержится в исходном BAK-файле.
- Любые существующие оптимизированные для операций в памяти файловые группы переименовываются в XTP.
- Параметры
SINGLE_USER
иRESTRICTED_USER
преобразуются вMULTI_USER
.
Ограничения
- Резервные копии поврежденных баз данных могут быть восстановлены в зависимости от типа повреждения, но автоматическое резервное копирование не будет выполняться до устранения повреждений. Чтобы предотвратить эту проблему, убедитесь, что вы запускаете
DBCC CHECKDB
на исходном Управляемом экземпляре SQL и используете резервную копиюWITH CHECKSUM
. - Восстановление файла
.BAK
базы данных, содержащего любые из ограничений, описанных в этом документе (например, объектыFILESTREAM
илиFILETABLE
), невозможно выполнить в Управляемом экземпляре SQL. - Файлы
.BAK
, содержащие несколько резервных наборов данных, невозможно восстановить. - Файлы
.BAK
, содержащие несколько файлов журнала, невозможно восстановить. - Резервные копии, содержащие базы данных размером более 8 ТБ, активные объекты OLTP в памяти или число файлов, превышающее 280 файлов на экземпляр, не могут быть восстановлены на экземпляре уровня "Общего назначения".
- Резервные копии, содержащие базы данных размером более 4 ТБ или объекты OLTP в памяти с общим размером, превышающим размер, описанный в ограничениях ресурсов, не могут быть восстановлены в экземпляре уровня "Критически важный для бизнеса". Сведения об инструкциях восстановления см. в Инструкции RESTORE.
Важно!
Те же ограничения применяются ко встроенной операции восстановления на момент времени. Например, база данных общего назначения размером более 4 ТБ не может быть восстановлена в экземпляре уровня "Критически важный для бизнеса". Критически важная для бизнеса база данных с файлами OLTP в памяти или числом файлов более 280 не может быть восстановлена на экземпляре уровня "Общего назначения".
Service Broker
Обмен сообщениями через Service Broker поддерживается только между управляемыми экземплярами SQL Azure:
CREATE ROUTE
: нельзя использоватьCREATE ROUTE
с аргументомADDRESS
, для которого значение отличается отLOCAL
или указано DNS-имя другого Управляемого экземпляра SQL. Всегда используется порт 4022.ALTER ROUTE
: нельзя использоватьALTER ROUTE
с аргументомADDRESS
, для которого значение отличается отLOCAL
или указано DNS-имя другого Управляемого экземпляра SQL. Всегда используется порт 4022.
Защита транспорта поддерживается, а защита обмена данными — нет:
CREATE REMOTE SERVICE BINDING
не поддерживается.
Компонент Service Broker включен по умолчанию и его нельзя отключить. Следующие параметры ALTER DATABASE не поддерживаются:
ENABLE_BROKER
DISABLE_BROKER
Хранимые процедуры, функции и триггеры
NATIVE_COMPILATION
не поддерживается для уровня "Общего назначения".- Следующие параметры sp_configure не поддерживаются:
allow polybase export
allow updates
filestream_access_level
remote access
remote data archive
remote proc trans
scan for startup procs
- Следующие параметра sp_configure игнорируются и ни на что не влияют:
Ole Automation Procedures
sp_execute_external_scripts
поддерживается только для Служб машинного обучения для управляемого экземпляра SQL, в противном случае sp_execute_external_scripts не поддерживается для Управляемый экземпляр SQL. См. раздел Примеры.xp_cmdshell
не поддерживается. См. раздел xp_cmdshell (Transact-SQL).Extended stored procedures
не поддерживаются. Это также относится кsp_addextendedproc
иsp_dropextendedproc
. Эта функциональная возможность не будет поддерживаться, так как является устаревшей для SQL Server. Дополнительные сведения см. в статье о расширенных хранимых процедурах.sp_attach_db
,sp_attach_single_file_db
иsp_detach_db
не поддерживаются. См. статьи sp_attach_db (Transact-SQL), sp_attach_single_file_db (Transact-SQL) и sp_detach_db (Transact-SQL).
Системные функции и переменные
Следующие переменные, функции и представления возвращают различные результаты:
SERVERPROPERTY('EngineEdition')
возвращает значение 8. Это свойство уникально идентифицирует Управляемый экземпляр SQL. См. статью SERVERPROPERTY (Transact-SQL).SERVERPROPERTY('InstanceName')
возвращает значение NULL, так как концепция экземпляра в том виде, в котором она существует в SQL Server, не применяется к Управляемому экземпляру SQL. См. статью SERVERPROPERTY (Transact-SQL).@@SERVERNAME
возвращает полное подключаемое DNS-имя, напримерmy-managed-instance.wcus17662feb9ce98.database.windows.net
. См. статью @@SERVERNAME.SYS.SERVERS
возвращает полное DNS-имя с возможностью подключения, напримерmyinstance.domain.database.windows.net
для свойств name и data_source. См. статью SYS.SERVERS.@@SERVICENAME
возвращает значение NULL, так как концепция службы в том виде, в котором она существует в SQL Server, не применяется к Управляемому экземпляру SQL. См. статью @@SERVICENAME.SUSER_ID
поддерживается. Он возвращает значение NULL, если имя для входа Azure AD отсутствует вsys.syslogins
. См. статью Идентификатор SUSER_ID (Transact-SQL).SUSER_SID
не поддерживается. Возвращаются неверные данные, что является временной известной проблемой. См. статью SUSER_SID (Transact-SQL).
Ограничения среды
Подсеть
- Другие ресурсы (например, виртуальные машины) нельзя поместить в подсеть, в которой развернут Управляемый экземпляр SQL. Разверните эти ресурсы с помощью другой подсети.
- Подсеть должна иметь достаточное количество доступных IP-адресов. В подсеть необходимо включить по крайней мере 32 IP-адреса.
- Количество виртуальных ядер и типов экземпляров, которые можно развернуть в регионе, имеет некоторые ограничения и пределы.
- Имеется конфигурация сети, которую необходимо применить к подсети.
Виртуальная сеть
- Виртуальную сеть можно развернуть с помощью модели ресурсов. Классическая модель не поддерживает развертывание виртуальной сети.
- После создания управляемого экземпляра SQL перемещение управляемого экземпляра SQL или виртуальной сети в другую группу ресурсов или подписку не поддерживается.
- Для управляемых экземпляров SQL, размещенных в виртуальных кластерах, созданных до 22 сентября 2020 г., глобальный пиринг виртуальных сетей не поддерживается. Вы можете подключаться к этим ресурсам через ExpressRoute или по принципу виртуальная сеть — виртуальная сеть через шлюзы виртуальной сети.
Группы отработки отказа
Системные базы данных не реплицируются на дополнительный экземпляр в группе отработки отказа. Таким образом, сценарии, зависящие от объектов из системных баз данных, невозможны на экземпляре-получателе, если только объекты не создаются на вторичном экземпляре вручную.
TEMPDB
- Максимальный размер файлов системной базы данных
tempdb
не может превышать 24 ГБ на ядро для уровня общего назначения. Максимальный размерtempdb
уровня "Критически важный для бизнеса" ограничен размером хранилища Управляемого экземпляра SQL. Размер файла журналаTempdb
ограничен 120 ГБ для уровня "Общего назначения". Некоторые запросы могут возвращать ошибку, если им требуется более 24 ГБ на ядро вtempdb
или если они создают более 120 ГБ данных журнала. Tempdb
всегда разбивается на 12 файлов данных: 1 основной файл данных, также называемый главным, и 11 неосновных файлов данных. Изменить структуру файла и добавить новые файлы вtempdb
невозможно.- Метаданные
tempdb
, оптимизированные для памяти, новая функция выполняющейся в памяти базы данных SQL Server 2019, не поддерживаются. - Объекты, созданные в шаблоне базы данных, нельзя автоматически создать при перезапуске или отработке отказа
tempdb
, посколькуtempdb
не получает первоначальный список объектов от шаблона базы данных. Объекты необходимо создавать вtempdb
вручную после каждой перезагрузки или отработки отказа.
MSDB
Следующие схемы системной базы данных msdb
в Управляемом экземпляре SQL должны принадлежать соответствующим заранее определенным ролям:
- Общие роли
- TargetServersRole
- Предопределенные роли базы данных
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
- Роли DatabaseMail:
- DatabaseMailUserRole
- Роли служб интеграции:
- msdb
- db_ssisltduser
- db_ssisoperator
Важно!
Изменение заранее заданных имен ролей, имен схем и владельцев схем клиентами влияет на нормальную работу службы. Любые изменения, внесенные в эти данные, будут возвращены к заранее заданным значениям, как только они будут обнаружены, или, самое позднее, при следующем обновлении службы, чтобы обеспечить нормальную работу службы.
Журналы ошибок
Управляемый экземпляр SQL помещает подробную информацию в журналы ошибок. Множество внутренних системных событий регистрируются в журнале ошибок. Для чтения журналов ошибок настройте собственную процедуру отфильтровывание несущественных записей. Дополнительные сведения см. в Управляемый экземпляр SQL — sp_readmierrorlog или расширение Управляемого экземпляра SQL (предварительная версия) для Azure Data Studio.
Изменение числа сохраненных журналов ошибок не поддерживается.
Дальнейшие действия
- Дополнительные сведения об Управляемом экземпляре SQL см. в статье Что такое Управляемый экземпляр SQL?
- Список функций и сравнений см. в статье Сравнение функций Управляемого экземпляра SQL Azure.
- Обновления выпусков представлены на странице Что нового?.
- Проблемы, обходные пути и решения для них описаны в статье Известные проблемы с Управляемым экземпляром SQL Azure.
- Краткое руководство по созданию нового Управляемого экземпляра SQL см. в статье Создание Управляемого экземпляра SQL.