Различия T-SQL между SQL Server и Управляемым экземпляром SQL Azure
В этой статье приведены и объяснены различия в синтаксисе и поведении между Управляемым экземпляром SQL Azure и SQL Server.
Управляемый экземпляр SQL обеспечивает высокую совместимость с ядром СУБД SQL Server, и большинство функций поддерживается в Управляемом экземпляре SQL.
Существуют некоторые ограничения PaaS, появившиеся в Управляемом экземпляре SQL, а также некоторые изменения в поведении по сравнению с SQL Server. Различия делятся на следующие категории:
- Доступность, включая различия в группах доступности Always On и резервных копиях.
- Безопасность, включая различия в аудите, сертификатах, учетных данных, поставщиках услуг шифрования, именах входа и пользователях, а также ключе службы и главном ключе службы.
- Конфигурация, включая различия в расширении буферного пула, параметрах сортировки, уровнях совместимости, зеркальном отображении баз данных, параметрах баз данных, агенте SQL Server и параметрах таблиц.
- К функциям относятся BULK INSERT/OPENROWSET, CLR, DBCC, распределенные транзакции, расширенные события, внешние библиотеки, FILESTREAM и FileTable, полнотекстовый семантический поиск, связанные серверы, PolyBase , Репликация, RESTORE, Service Broker, хранимые процедуры, функции и триггеры.
- Параметры среды, включая конфигурацию виртуальных сетей и подсети.
Большинство этих функций являются ограничениями архитектуры и представляют функции служб.
Временные известные проблемы, которые обнаружены в Управляемом экземпляре SQL и будут разрешены в дальнейшем, описаны на странице Что нового?.
Идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD). В настоящее время мы обновляем документацию.
Доступность
Группы доступности AlwaysOn
Высокий уровень доступности встроен в Управляемый экземпляр SQL, и пользователи не могут им управлять. Не поддерживаются следующие инструкции:
- CREATE ENDPOINT … ДЛЯ DATABASE_MIRRORING
- CREATE AVAILABILITY GROUP
- ALTER AVAILABILITY GROUP
- DROP AVAILABILITY GROUP
- Предложение SET HADR инструкции ALTER DATABASE.
Резервное копирование
Для Управляемого экземпляра SQL Azure предусмотрено автоматическое резервное копирование, и пользователи могут создавать полные резервные копии базы данных COPY_ONLY . Разностное резервное копирование, а также резервное копирование журналов и моментальных снимков файлов не поддерживаются.
- С помощью Управляемый экземпляр SQL можно создать резервную копию базы данных экземпляра только в учетной записи хранения BLOB-объектов Azure:
- Поддерживается только BACKUP TO URL .
- FILE , TAPE и устройства резервного копирования не поддерживаются.
- 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), который предоставляет права доступа с ограниченным доступом для служба хранилища Azure ресурсов Подробнее об этом. Использование ключей Access для этих сценариев не поддерживается.
- Максимальный размер полосы резервного копирования с помощью команды BACKUP в Управляемом экземпляре SQL составляет 195 ГБ, что является максимальным размером большого двоичного объекта. Чтобы уменьшить размер отдельного чередующегося набора и соблюсти это ограничение, можно увеличить число чередующихся наборов в команде резервного копирования.
- Создать резервную копию на 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 FROM BINARY = asn_encoded_certificate WITH PRIVATE KEY ();Учетные данные
Поддерживаются управляемые удостоверения, Azure Key Vault и SHARED ACCESS SIGNATURE удостоверения. Пользователи Windows не поддерживаются.
Поставщики служб шифрования
Управляемый экземпляр 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). Субъекты-серверы (имена входа) создаются на уровне сервера, а пользователи (субъекты базы данных) создаются на уровне базы данных. Имена входа Microsoft Entra, созданные с помощью синтаксиса CREATE LOGIN , и пользователи Microsoft Entra, созданные с помощью синтаксиса CREATE USER FROM LOGIN , поддерживаются. При создании пользователя и указании FROM LOGIN этот пользователь связан с именем входа и наследует роли сервера и разрешения, назначенные ему. Управляемый экземпляр SQL поддерживает создание пользователей автономной базы данных на основе удостоверений Microsoft Entra с синтаксисом CREATE USER [AADUser/AAD group] FROM EXTERNAL PROVIDER . Пользователи, созданные таким образом, не связаны с субъектами сервера, даже если субъект сервера с тем же именем существует в master базе данных.
- Имена для входа Windows, созданные с помощью синтаксиса CREATE LOGIN . FROM WINDOWS , не поддерживаются. Используйте имена входа и пользователи Microsoft Entra.
- Администратор Microsoft Entra для экземпляра имеет неограниченные права администратора.
- Некоторые функции не поддерживают использование имен входа Microsoft Entra в взаимодействиях между экземплярами, но только в пределах одного Управляемый экземпляр SQL, например sql Server реплика tion. Функция связанного сервера, хотя поддерживает проверку подлинности между экземплярами, используя субъекты сервера Microsoft Entra (имена входа).
- Установка имени входа Microsoft Entra, сопоставленного с группой Microsoft Entra, так как владелец базы данных не поддерживается. Участник группы Microsoft Entra может быть владельцем базы данных, даже если имя входа не было создано в базе данных.
- Олицетворение субъектов на уровне сервера Microsoft Entra с помощью других субъектов Microsoft Entra поддерживается, например предложение EXECUTE AS . Ограничения EXECUTE AS:
- EXECUTE AS USER не поддерживается для пользователей Microsoft Entra, если имя отличается от имени входа. Например, если для создания пользователя использован синтаксис CREATE USER [myAadUser] FROM LOGIN [john@contoso.com] , после чего производится попытка олицетворения с помощью синтаксиса EXEC AS USER = myAadUser . При создании пользователя из имени входа Microsoft Entra укажите user_name так же, как и login_name из login.
- Только имена входа на уровне SQL Server, которые являются частью sysadmin роли, могут выполнять следующие операции, предназначенные для субъектов Microsoft Entra:
- EXECUTE AS USER;
- EXECUTE AS LOGIN.
- Следующие конфигурации поддерживаются с помощью bacpac-файла базы данных:
- Экспорт и импорт базы данных между различными экземплярами управления в одном домене Microsoft Entra.
- Экспорт базы данных из Управляемый экземпляр SQL и импорт в База данных SQL в том же домене Microsoft Entra.
- Экспорт базы данных из База данных SQL и импорт в Управляемый экземпляр SQL в том же домене Microsoft Entra.
- Экспорт базы данных из Управляемого экземпляра SQL и импорт в SQL Server (версии 2012 или более поздней).
- В этой конфигурации все пользователи Microsoft Entra создаются как субъекты базы данных SQL Server (пользователи) без входа. Тип пользователей и SQL отображается как SQL_USER в sys.database_principals . Их разрешения и роли остаются в метаданных базы данных SQL Server и могут использоваться для олицетворения. Однако их нельзя использовать для доступа и входа в SQL Server с помощью учетных данных.
- Если учетная запись Microsoft Entra напрямую сопоставлена с именем входа Microsoft Entra, который присутствует в sys.server_principals качестве типа E, предоставьте доступ и примените разрешения для этого входа.
- Если учетная запись Microsoft Entra является членом группы, сопоставленной с именем входа Microsoft Entra, которая присутствует в sys.server_principals качестве типа «X», предоставьте доступ и примените разрешения для этого входа.
- Если учетная запись Microsoft Entra существует как непосредственно сопоставленная с пользователем Microsoft Entra в базе данных, которая присутствует в sys.database_principals качестве типа E, предоставьте доступ и примените разрешения пользователя базы данных Microsoft Entra.
- Если учетная запись Microsoft Entra является членом группы Microsoft Entra, сопоставленной с пользователем Microsoft Entra в базе данных, которая присутствует в sys.database_principals качестве типа X, предоставьте доступ и примените разрешения пользователя группы Microsoft Entra.
Ключ службы и главный ключ службы
- Резервное копирование главного ключа не поддерживается (управляется службой базы данных 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 SET PARTNER и SET WITNESS не поддерживаются.
- CREATE ENDPOINT … FOR DATABASE_MIRRORING не поддерживается.
Параметры базы данных
- Несколько файлов журнала не поддерживаются.
- Объекты в памяти не поддерживаются на уровне служб «Общего назначения».
- Существует ограничение в 280 файлов на экземпляр общего назначения, что подразумевает максимум 280 файлов на одну базу данных. Это ограничение распространяется на файлы данных и файлы журнала на уровне «Общего назначения». Уровень «Критически важный для бизнеса» поддерживает 32 767 файлов на базу данных.
- База данных не может содержать файловые группы, содержащие данные FILESTREAM. Восстановление завершается ошибкой FILESTREAM , если .bak содержит данные.
- Каждый файл помещается в хранилище BLOB-объектов Azure. Операции ввода-вывода и пропускная способность каждого файла зависят от размера каждого файла.
Инструкция CREATE DATABASE
К CREATE DATABASE применяются следующие ограничения:
- Невозможно определить файлы и файловые группы.
- Оптимизированная для памяти файловая группа и файл автоматически добавляются и называются XTP.
- Параметр CONTAINMENT не поддерживается.
- Параметры WITH не поддерживаются.
Совет Чтобы обойти эту проблему, используйте ALTER DATABASE после CREATE DATABASE , чтобы задать параметры базы данных для добавления файлов или задать вложение.
Инструкция 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 следует повторить. Дополнительные сведения о связанных сообщениях об ошибках см. в разделе «Комментарии».
Агент SQL Server
- Включение и отключение агента SQL Server в настоящее время не поддерживается для Управляемого экземпляра SQL. Агент SQL работает всегда.
- Триггер расписания заданий на основе простоя ЦП не поддерживается.
- Параметры агента SQL Server доступны только для чтения. Процедура sp_set_agent_properties не поддерживается в Управляемом экземпляре SQL.
- Задания
- Шаги задания T-SQL поддерживаются.
- Поддерживаются следующие задания реплика tion:
- Читатель журнала транзакций.
- Снимок
- Распространитель
- Шаг задания репликации слиянием не поддерживается.
- Читатель очереди пока не поддерживается.
- Командная оболочка пока не поддерживается.
- Пейджер не поддерживается.
- NetSend не поддерживается.
- Оповещения еще не поддерживаются.
- Прокси-серверы не поддерживаются.
Сведения об агенте 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 работают с ограниченным числом глобальных флагов трассировки.
- DBCC 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 не поддерживаются.
- База данных не может содержать файловые группы с данными FILESTREAM .
- FILETABLE не поддерживается.
- Таблицы не могут содержать типы FILESTREAM .
- Следующие функции не поддерживаются:
- GetPathLocator()
- GET_FILESTREAM_TRANSACTION_CONTEXT()
- PathName()
- GetFileNamespacePat)
- FileTableRootPath()
Полнотекстовый семантический поиск
Связанные серверы
Связанные серверы в Управляемом экземпляре 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’, ‘. ‘).AdventureWorks2022.HumanResources.Employee . SQLNCLI Только значения , SQLNCLI11 SQLOLEDB и MSOLEDBSQL значения поддерживаются в качестве поставщика. Собственный клиент SQL Server (часто сокращенный 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 и проверку подлинности Microsoft Entra.
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 служба хранилища (ADLS) 2-го поколения. CETAS также может экспортировать результаты инструкции T-SQL SELECT параллельно в созданную внешнюю таблицу.
Репликация
- Поддерживаются моментальные снимки и двунаправленная репликация. Слияние реплика tion, одноранговых реплика tion и обновляемых подписок не поддерживаются.
- Репликация транзакций доступна для Управляемый экземпляр SQL с некоторыми ограничениями:
- Все типы участников репликации (издатель, распространитель, подписчик по запросу и подписчик push-уведомлений) можно размещать в Управляемом экземпляре SQL, но издатель и распространитель должны быть либо в облаке, либо в локальной среде.
- Управляемый экземпляр SQL может взаимодействовать с последними версиями SQL Server. Дополнительные сведения см. в таблице поддерживаемых версий.
- У репликации транзакций есть некоторые дополнительные требования к сети.
Дополнительные сведения о настройке репликации транзакций см. в следующих учебниках:
- Репликация между издателем Управляемого экземпляра SQL и подписчиком Управляемого экземпляра SQL
- Репликация между издателем Управляемого экземпляра SQL, распространителем Управляемого экземпляра SQL и подписчиком SQL Server.
Инструкция RESTORE
- Поддерживаемый синтаксис:
- RESTORE DATABASE
- RESTORE FILELISTONLY
- RESTORE HEADERONLY
- RESTORE LABELONLY
- RESTORE VERIFYONLY
- RESTORE LOGONLY
- RESTORE REWINDONLY
- FROM URL (хранилище BLOB-объектов) — единственный поддерживаемый параметр.
- FROM DISK / TAPE или устройство резервного копирования не поддерживаются.
- Резервные наборы данных не поддерживаются.
Операция восстановления базы данных является асинхронной и повторной попыткой в Управляемый экземпляр SQL Azure. В SSMS может возникнуть ошибка, если подключение завершается сбоем или истекает время ожидания. Управляемый экземпляр SQL Azure продолжает пытаться восстановить базу данных в фоновом режиме, и вы можете отслеживать ход выполнения процесса восстановления с помощью sys.dm_exec_requests и sys.dm_operation_status динамических административных представлений.
Следующие параметры базы данных задаются или переопределяются и не могут быть потом изменены:
- 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
- Ole Automation Procedures
Системные функции и переменные
Следующие переменные, функции и представления возвращают различные результаты:
- 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, если имя входа Microsoft Entra не в 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 первичный, также называемый master , файл данных и 11 не первичных файлов данных. Структура файлов не может быть изменена tempdb , и в нее нельзя добавить новые файлы.
- Метаданные TempDB, оптимизированные для памяти, новая функция базы данных SQL Server 2019 в памяти, не поддерживается.
- Объекты, созданные в model базе данных, не могут быть автоматически созданы tempdb после перезапуска или отработки отказа, так как tempdb не получают его исходный список объектов из model базы данных. Объекты необходимо создавать в tempdb вручную после каждой перезагрузки или отработки отказа.
msdb
Следующие схемы системной базы данных msdb в Управляемом экземпляре SQL должны принадлежать соответствующим заранее определенным ролям:
- Общие роли
- TargetServersRole
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
- DatabaseMailUserRole
- db_ssisadmin
- db_ssisltduser
- db_ssisoperator
Изменение предопределенных имен ролей, имен схем и владельцев схем клиентами повлияет на нормальную работу службы. Любые изменения, внесенные в эти данные, будут возвращены к заранее заданным значениям, как только они будут обнаружены, или, самое позднее, при следующем обновлении службы, чтобы обеспечить нормальную работу службы.
Журналы ошибок
Управляемый экземпляр SQL помещает подробную информацию в журналы ошибок. Множество внутренних системных событий регистрируются в журнале ошибок. Для чтения журналов ошибок настройте собственную процедуру отфильтровывание несущественных записей. Дополнительные сведения см. в Управляемый экземпляр SQL — sp_readmierrorlog или расширение Управляемого экземпляра SQL (предварительная версия) для Azure Data Studio.
Изменение количества сохраненных журналов ошибок не поддерживается.
Связанный контент
- Что такое Управляемый экземпляр SQL Azure?
- Сравнение функций: База данных SQL Azure и Управляемый экземпляр SQL Azure
- Что нового в Управляемом экземпляре SQL Azure?
- Известные проблемы с Управляемый экземпляр SQL Azure
- Краткое руководство. Создание Управляемого экземпляра SQL Azure
Введение в MS SQL Server и T-SQL
SQL Server является одной из наиболее популярных систем управления базами данных (СУБД) в мире. Данная СУБД подходит для самых различных проектов: от небольших приложений до больших высоконагруженных проектов.
SQL Server был создан компанией Microsoft. Первая версия вышла в 1987 году. А текущей версией является версия 2022, которая вышла в ноябре 2022 году и которая будет использоваться в текущем руководстве.
SQL Server долгое время был исключительно системой управления базами данных для Windows, однако начиная с версии 16 эта система доступна и на Linux.
SQL Server характеризуется такими особенностями как:
- Производительность. SQL Server работает очень быстро.
- Надежность и безопасность. SQL Server предоставляет шифрование данных.
- Простота. С данной СУБД относительно легко работать и вести администрирование.
Центральным аспектом в MS SQL Server, как и в любой СУБД, является база данных. База данных представляет хранилище данных, организованных определенным способом. Нередко физически база данных представляет файл на жестком диске, хотя такое соответствие необязательно. Для хранения и администрирования баз данных применяются системы управления базами данных (database management system) или СУБД (DBMS). И как раз MS SQL Server является одной из такой СУБД.
Для организации баз данных MS SQL Server использует реляционную модель. Эта модель баз данных была разработана еще в 1970 году Эдгаром Коддом. А на сегодняшний день она фактически является стандартом для организации баз данных.
Реляционная модель предполагает хранение данных в виде таблиц, каждая из которых состоит из строк и столбцов. Каждая строка хранит отдельный объект, а в столбцах размещаются атрибуты этого объекта.
Для идентификации каждой строки в рамках таблицы применяется первичный ключ (primary key). В качестве первичного ключа может выступать один или несколько столбцов. Используя первичный ключ, мы можем ссылаться на определенную строку в таблице. Соответственно две строки не могут иметь один и тот же первичный ключ.
Через ключи одна таблица может быть связана с другой, то есть между двумя таблицами могут быть организованы связи. А сама таблица может быть представлена в виде отношения («relation»).
Для взаимодействия с базой данных применяется язык SQL (Structured Query Language). Клиент (например, внешняя программа) отправляет запрос на языке SQL посредством специального API. СУБД должным образом интерпретирует и выполняет запрос, а затем посылает клиенту результат выполнения.
Изначально язык SQL был разработан в компании IBM для системы баз данных, которая называлась System/R. При этом сам язык назывался SEQUEL (Structured English Query Language). Хотя в итоге ни база данных, ни сам язык не были впоследствии официально опубликованы, по традиции сам термин SQL нередко произносят как «сиквел».
В 1979 году компания Relational Software Inc. разработала первую систему управления баз данных, которая называлась Oracle и которая использовала язык SQL. В связи с успехом данного продукта компания была переименована в Oracle.
Впоследствии стали появляться другие системы баз данных, которые использовали SQL. В итоге в 1989 году Американский Национальный Институт Стандартов (ANSI) кодифицировал язык и опубликовал его первый стандарт. После этого стандарт периодически обновлялся и дополнялся. Последнее его обновление состоялось в 2011 году. Но несмотря на наличие стандарта нередко производители СУБД используют свои собственные реализации языка SQL, которые немного отличаются друг от друга.
Выделяются две разновидности языка SQL: PL-SQL и T-SQL. PL-SQL используется в таких СУБД как Oracle и MySQL. T-SQL (Transact-SQL) применяется в SQL Server. Собственно поэтому в рамках текущего руководства будет рассматриваться именно T-SQL.
В зависимости от задачи, которую выполняет команда T-SQL, он может принадлежать к одному из следующих типов:
- DDL (Data Definition Language / Язык определения данных). К этому типу относятся различные команды, которые создают базу данных, таблицы, индексы, хранимые процедуры и т.д. В общем определяют данные. В частности, к этому типу мы можем отнести следующие команды:
- CREATE : создает объекты базы данных (саму базу даных, таблицы, индексы и т.д.)
- ALTER : изменяет объекты базы данных
- DROP : удаляет объекты базы данных
- TRUNCATE : удаляет все данные из таблиц
- SELECT : извлекает данные из БД
- UPDATE : обновляет данные
- INSERT : добавляет новые данные
- DELETE : удаляет данные
- GRANT : предоставляет права для доступа к данным
- REVOKE : отзывает права на доступ к данным
SQL vs T-SQL: Understanding the Differences
SQL and T-SQL both see heavy use in the database and data science industries. But what exactly are they? These two query languages are very similar, both in name and in what they can do, so the distinction between them can be difficult to understand.
In this post, we’re going to: define what Standard SQL and T-SQL are, investigate the differences between them, provide examples of each, and summarize which you should be learning and why.
- Define what Standard SQL and T-SQL are
- Investigate the differences between them
- Provide examples of each
- Summarize which you should be learning and why
What is Standard SQL?
Standard SQL, usually referred to simply as «SQL,» is a type of programming language called a query language. Query languages are used for communicating with a database.
SQL is used for adding, retrieving, or updating data stored in a database. It is used across many different types of databases. Meaning, if you learn the basics of SQL, you will be in a good position for a career in data.
Databases and the data stored within them are a core part of how many companies operate. An easy example is with a retailer that might store order or customer information in a database. SQL is a programming language that allows the company to work with that data.
What is T-SQL?
T-SQL, which stands for Transact-SQL and is sometimes referred to as TSQL, is an extension of the SQL language used primarily within Microsoft SQL Server. This means that it provides all the functionality of SQL but with some added extras.
You can think of it a bit like a SQL dialect — it’s very similar to regular SQL, but it has a few extras and differences that make it unique.
Despite the clear and rigid specifications of standard SQL, it does allow for database companies to add their own extensions to set them apart from other products. T-SQL is an example of this for Microsoft SQL Server databases — T-SQL is central to the software and runs most operations within it.
Most major database vendors offer their own SQL language extensions for their own products, and T-SQL is one of the most widely-used examples of these (because Microsoft SQL server is popular).
Put simply: when you are writing queries within Microsoft SQL Server, you are effectively using T-SQL. All applications that communicate with SQL Server, regardless of the application’s user interface, do so by sending T-SQL statements to the server.
However, in addition to SQL Server, other database management systems (DBMS) also support T-SQL. Another Microsoft product, Microsoft Azure SQL Database, supports most features of T-SQL.
T-SQL has been designed to make working with those databases that support it easier and more efficient.
What is the difference between SQL and T-SQL?
Now we have covered the basics of both, let’s take a look at the main differences:
Difference #1
The obvious difference is in what they are designed for: SQL is a query language used for manipulating data stored in a database. T-SQL is also a query language, but it’s an extension of SQL that is primarily used in Microsoft SQL Server databases and software.
Difference #2
SQL is open-source. T-SQL is developed and owned by Microsoft.
Difference #3
SQL statements are executed one at a time, also known as «non-procedural.» T-SQL executes statements in a «procedural» way, meaning that the code will be processed as a block, logically and in a structured order.
There are advantages and disadvantages to each approach, but from a learner perspective, this difference isn’t too important. You’ll be able to get and work with the data you want in either language, it’s just that the way you go about doing that will vary a bit depending on which language you’re using and the specifics of your query.
Difference #4
On top of these more general differences, SQL and T-SQL also have some slightly different command key words. T-SQL also features functions that are not part of regular SQL.
An example of this is how in we select the top X number of rows. In standard SQL, we would use the LIMIT keyword. In T-SQL, we use the TOP keyword.
Both of these commands do the same thing, as we can see in the examples below. Both queries will return the top ten rows in the users table ordered by the age column.
SQL Example
SELECT * FROM users ORDER BY age LIMIT 10;T-SQL Example
SELECT TOP 10 (*) FROM users ORDER BY age;Difference #5
Finally, and as referenced before, T-SQL offers functionality that does not appear in regular SQL. One example is the ISNULL function. This will replace NULL values coming from a specific column. The below would return an age of “0” for any rows that have a value of NULL in the age column.
SELECT ISNULL(0, age) FROM users;(There are ways of doing this in standard SQL too, of course, but the commands are slightly different.)
These are just a couple of code differences to give you an idea of how the two compare, but of course, there are many more. You can learn more about SQL commands with our extensive guide. And of course, Microsoft has documentation for working with T-SQL.
Which is better to learn?
If you want to work with databases in any way, or if you’re seeking a data job, learning SQL is a necessity.
As T-SQL is an extension of SQL, you will need to learn the basics of SQL before starting. If you learn T-SQL first, you will end up picking up knowledge of standard SQL anyway.
With most things, which you choose to learn should depend on what you are trying to achieve. If you are going to be working with Microsoft SQL server, then it is worth learning more about T-SQL. If you are a beginner looking to get started in using databases, then begin with learning about SQL.
If you’d like to learn more about this topic, check out Dataquest’s interactive Introduction to SQL and Databases course, and our SQL Fundamentals that help you master these skills in around 2 months.
About the author
Daniel Clark
Daniel Clark is a data visualization journalist at the Times of London. In his free time, he enjoys running and watching football.
2) SQL против PL / SQL против T-SQL
SQL является стандартным языком для запросов к базе данных.
PL SQL в основном означает «Расширения процедурного языка для SQL». Это расширение языка структурированных запросов (SQL), которое используется в Oracle.
T-SQL в основном означает «Transact-SQL». Это расширение языка структурированных запросов (SQL), которое используется в Microsoft.
В этом уроке мы узнаем
- Разница между SQL и PL / SQL
- Разница между T-SQL и PL-SQL
- Разница между SQL и T-SQL
Разница между SQL и PL / SQL
SQL
- SQL – это отдельный запрос, который используется для выполнения операций DML и DDL.
- PL / SQL – это блок кодов, который используется для записи целых программных блоков / процедур / функций и т. Д.
- Это декларативное определение, которое определяет, что нужно сделать, а не то, как это нужно делать.
- PL / SQL является процедурным, который определяет, как все должно быть сделано.
- Выполнить как одно утверждение.
- Выполнить как целый блок.
- В основном используется для манипулирования данными.
- В основном используется для создания приложения.
- Взаимодействие с сервером базы данных.
- Нет взаимодействия с сервером базы данных.
- В нем не может быть PL / SQL-кода.
- Это расширение SQL, так что оно может содержать внутри себя SQL.
Разница между T-SQL и PL-SQL
- T-SQL – это продукт Microsoft.
- PL-SQL разработан Oracle.
- Полная форма TL SQL – это язык запросов Transact Structure.
- Полная форма PL SQL – это язык структурных запросов процедурного языка.
- T-SQL дает высокую степень контроля программистам.
- Это естественный язык программирования, который легко сочетается с SQL
- T-SQL работает лучше всего с сервером Microsoft SQL
- PL-SQL работает лучше всего с сервером базы данных Oracle.
- Это легко и просто понять.
- PL-SQL сложен для понимания.
- T-SQL позволяет вставлять несколько строк в таблицу, используя инструкцию BULK INSERT.
- PL / SQL поддерживает такие понятия, как инкапсуляция данных, перегрузка функций и сокрытие информации.
- Оператор SELECT INTO, используемый в T-SQL
- Инструкция INSERT INTO должна использоваться в PL / SQL
- В T-SQL предложение NOT EXISTS используется вместе с инструкциями SELECT.
- В PL / SQL есть оператор MINUS, который можно использовать с инструкциями SELECT
Разница между SQL и T-SQL
- SQL – это язык программирования, который фокусируется на управлении реляционными базами данных.
- T-SQL – это процедурное расширение, используемое SQL Server.
- Это используется для контроля и манипулирования данными, где хранятся большие объемы информации о продуктах, клиентах и т. Д.
- T-SQL имеет некоторые функции, которые недоступны в SQL. Как и процедурные элементы программирования и локальная переменная, чтобы обеспечить более гибкий контроль над потоком приложения.
- SQL-запросы подаются индивидуально на сервер базы данных.
- T-SQL пишет программу таким образом, что все команды передаются на сервер за один раз.
- Синтаксис был формализован для многих команд; Некоторые из них: SELECT, INSERT, UPDATE, DELETE, CREATE и DROP.
- Он также включает в себя специальные функции, такие как преобразованная дата () и некоторые другие функции, которые не являются частью обычного SQL.
