Различия T-SQL между SQL Server и Базой данных SQL Azure

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

Обзор

Большинство функций 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, но поддерживает проверку подлинности Azure Active Directory. Сюда входит проверка подлинности участников Active Directory, которая является федеративной и использует Azure Active Directory. Дополнительные сведения см. в статье Подключение к базе данных SQL или Azure Synapse Analytics с использованием проверки подлинности Azure Active Directory.
  • Запросы между базами данных и между экземплярами с использованием имен, состоящих из трех или четырех элементов. Поддерживаются имена из трех элементов, ссылающихся на базу данных 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 и перенести базы данных, используйте Помощник по миграции данных .