Различия T-SQL между SQL Server и Базой данных SQL Azure
При миграции базы данных из SQL Server в Базу данных SQL Azure может оказаться, что базы данных SQL Server необходимо несколько модернизировать, прежде чем их переносить. В этой статье содержатся рекомендации, которые помогут выполнить переработку и понять основные причины ее необходимости. Для обнаружения несовместимостей и миграции баз данных в Базу данных SQL Azure используйте Помощник по миграции данных.
Примечание.
Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).
Обзор
Большинство функций T-SQL, используемых приложениями, полностью поддерживаются как в Microsoft SQL Server, так и в Базе данных SQL Azure. Например, основные компоненты SQL, такие как типы данных, операторы, строковые, арифметические, логические функции, функции работы с курсорами, работают одинаково и на сервере SQL Server, и в базе данных SQL. Но существует несколько различий T-SQL между элементами DDL (языка описания данных) и элементами DML (языка обработки данных), использование которых приводит к формированию частично поддерживаемых инструкций и запросов T-SQL (которые будут рассмотрены далее в этой статье).
Кроме того, некоторые функции и синтаксис не поддерживаются вообще, так как База данных SQL Azure предназначена для изоляции функций от любых зависимостей в системных базах данных и операционной системе. Таким образом, большинство функций уровня экземпляра не поддерживаются в Базе данных SQL. Инструкции и параметры T-SQL недоступны, если они используются для настройки параметров уровня экземпляра, компонентов операционной системы, а также для указания конфигурации файловой системы. Если требуются такие возможности, их часто можно заменить соответствующими альтернативами, доступными в базе данных SQL или другой службе (компоненте) Azure.
Например, высокий уровень доступности встроен в Базу данных SQL Azure. По этой причине в Базе данных SQL не поддерживаются все инструкции T-SQL, связанные с группами доступности, и динамические административные представления, связанные с группами доступности AlwaysOn.
Список поддерживаемых и неподдерживаемых в Базе данных SQL функций см. в статье Сравнение функций Базы данных SQL Azure. Эта страница дополняет эту статью и фокусируется на инструкциях T-SQL.
Инструкции синтаксиса T-SQL с частичными различиями
Основные инструкции DDL доступны, но их расширения, связанные с неподдерживаемыми функциями, такими как размещение файлов на диске, не поддерживаются.
- У инструкций
CREATE DATABASE
иALTER DATABASE
в SQL Server есть три десятка параметров. Эти инструкции включают параметры размещения файлов, FILESTREAM и компонента Service Broker, которые применяются только к SQL Server. Они могут не иметь значения при создании баз данных в Базе данных SQL до миграции, но при переносе кода T-SQL, который создает базы данных, следует сравнить инструкцию CREATE DATABASE (База данных SQL Azure) с синтаксисом SQL Server для инструкции CREATE DATABASE (SQL Server T-SQL), чтобы убедиться, что поддерживаются все используемые параметры. ИнструкцияCREATE DATABASE
для Базы данных SQL Azure также располагает параметрами для цели службы и параметрами эластичного пула, которые применяются только к Базе данных SQL. - У инструкций
CREATE TABLE
иALTER TABLE
есть параметрыFILETABLE
иFILESTREAM
, которые нельзя использовать в Базе данных SQL, так как эти возможности не поддерживаются. - Инструкции
CREATE LOGIN
иALTER LOGIN
поддерживаются, но обеспечивают не все параметры, доступные в SQL Server. Чтобы сделать базу данных более переносимой, база данных SQL рекомендует по возможности вместо имен входа использовать пользователей автономной базы данных. Дополнительные сведения см. в статьях об инструкциях CREATE LOGIN и ALTER LOGIN, а также об управлении именами входа и пользователями.
Синтаксис T-SQL, не поддерживаемый в Базе данных SQL Azure
Помимо инструкций T-SQL,связанных с неподдерживаемыми функциями, описанными в статье о сравнении возможностей Базы данных SQL Azure, не поддерживаются также следующие инструкции и группы инструкций. Таким образом, если база данных, которую нужно перенести, использует любую их следующих функций, перестройте ваше приложение, чтобы исключить эти функции и инструкции T-SQL.
- Параметры сортировки системных объектов.
- Связанные с подключением: инструкции ENDPOINT. База данных SQL не поддерживает проверка подлинности Windows, но поддерживает проверку подлинности Microsoft Entra. Это включает проверку подлинности субъектов Active Directory, федеративных с идентификатором Microsoft Entra (ранее — Azure Active Directory). Дополнительные сведения см. в статье "Подключение к База данных SQL или Azure Synapse Analytics с помощью проверки подлинности Microsoft Entra".
- Запросы между базами данных и между экземплярами с использованием имен, состоящих из трех или четырех элементов. Поддерживаются имена из трех элементов, ссылающихся на базу данных
tempdb
и текущую базу данных. Эластичный запрос поддерживает ссылки только для чтения на таблицы в других базах данных MSSQL. - Межбазовые цепочки владения и свойство базы данных
TRUSTWORTHY
. EXECUTE AS LOGIN
. Вместо этого используйтеEXECUTE AS USER
.- Расширенное управление ключами для ключей шифрования. Управляемые клиентом ключи прозрачного шифрования и главные ключи столбца Always Encrypted можно хранить в Azure Key Vault.
- Обработка событий. Уведомления о событиях, уведомления о запросах.
- Свойства файла. Синтаксис, связанный с именем файла базы данных, размещением, размером и другими свойствами файла, которыми автоматически управляет База данных SQL.
- Высокий уровень доступности. Синтаксис, связанный с высоким уровнем доступности и восстановлением базы данных, которым управляет База данных SQL. Например, синтаксис, используемый для резервного копирования, восстановления, Always On, зеркального отображения базы данных, доставки журналов и моделей восстановления.
- Синтаксис, связанный с репликацией моментальных снимков, транзакций и репликации слиянием, недоступен в Базе данных SQL. Поддерживаются подписки на репликацию.
- Функции:
fn_get_sql
,fn_virtualfilestats
,fn_virtualservernodes
. - Конфигурация экземпляров. Синтаксис, связанный с памятью сервера, рабочими потоками, соответствием ЦП, флагами трассировки. Вместо этого укажите уровни служб и объемы вычислительных ресурсов.
KILL STATS JOB
.OPENQUERY
,OPENDATASOURCE
и имена, состоящие из четырех элементов.- Платформа .NET Framework. Интеграция со средой CLR
- Семантический поиск
- Учетные данные сервера: вместо них используйте учетные данные для базы данных.
- Разрешения уровня сервера. Разрешения уровня сервера
GRANT
,REVOKE
иDENY
не поддерживаются. Некоторые разрешения уровня сервера заменяются разрешениями уровня базы данных или неявно предоставляются встроенными ролями сервера. Некоторые динамические административные представления и представления каталога на уровне сервера имеют похожие представления уровня базы данных. SET REMOTE_PROC_TRANSACTIONS
SHUTDOWN
sp_addmessage
sp_configure
иRECONFIGURE
. Поддерживается ALTER DATABASE SCOPED CONFIGURATION.sp_helpuser
sp_migrate_user_to_contained
- агент SQL Server: синтаксис, основанный на агент SQL Server или
msdb
базе данных: оповещения, операторы, центральные серверы управления. Вместо этого используйте написание скриптов, например PowerShell. - Аудит SQL Server. Вместо этого следует использовать аудит Базы данных SQL.
- Трассировка SQL Server.
- Флаги трассировки.
- Отладка T-SQL.
- Триггеры входа или уровня сервера.
- Инструкция
USE
. Чтобы изменить контекст базы данных на другую базу данных, необходимо создать новое подключение к этой базе данных.
Полный справочник по T-SQL
Дополнительные сведения о грамматике и использовании, а также примеры T-SQL см. в справочнике по T-SQL (ядро СУБД).
Сведения о тегах "Относится к"
Справочник по T-SQL содержит статьи, связанные со всеми последними версиями SQL Server. Под заголовком статьи есть панель значков, где перечислены платформы MSSQL и их применимость. Например, группы доступности появились в SQL Server 2012. Статья CREATE AVAILABILITY GROUP указывает, что эта инструкция применяется в SQL Server (начиная с версии 2012). Инструкция не применяется в SQL Server 2008, SQL Server 2008 R2, Базе данных SQL Azure, Azure Synapse Analytics или Parallel Data Warehouse.
В некоторых случаях функция или инструкция, рассматриваемая в статье, может использоваться в продукте, однако по-разному поддерживаться в разных продуктах. Эти различия отмечаются по мере изложения материала. Например, статья CREATE TRIGGER
доступна в Базе данных SQL. Но параметр ALL SERVER
для триггеров уровня сервера указывает, что триггеры уровня сервера нельзя использовать в Базе данных SQL. Вместо них следует использовать триггеры уровня базы данных.
Следующие шаги
Список поддерживаемых и неподдерживаемых в Базе данных SQL функций см. в статье Сравнение функций Базы данных SQL Azure.
Чтобы обнаружить проблемы совместимости в базах данных SQL Server перед миграцией в Базу данных SQL Azure и перенести базы данных, используйте Помощник по миграции данных .