Поделиться через


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

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

Примечание.

Идентификатор Microsoft Entra ранее был известен как Azure Active Directory (Azure AD).

Обзор

Большинство функций Transact-SQL (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. Инструкции T-SQL, связанные с группами доступности, не поддерживаются базой данных SQL, а динамические административные представления, связанные с группами доступности AlwaysOn, также не поддерживаются.

Список поддерживаемых и неподдерживаемых базой данных SQL функций см. в статье "Сравнение функций" базы данных SQL Azure и Управляемого экземпляра SQL Azure. Эта страница дополняет эту статью и фокусируется на инструкциях T-SQL.

Инструкции синтаксиса T-SQL с частичными различиями

Доступны основные инструкции DDL, но расширения инструкций DDL, связанные с неподдерживаемых функций, таких как размещение файлов на диске, не поддерживаются.

  • У инструкций CREATE DATABASE и ALTER DATABASE в SQL Server есть три десятка параметров. Эти инструкции включают параметры размещения файлов, FILESTREAM и компонента Service Broker, которые применяются только к SQL Server. Это может не иметь значения, если вы создаете базы данных в базе данных SQL перед миграцией, но если вы переносите код T-SQL, который создает базы данных, которые создают базы данных CREATE (База данных SQL Azure) с синтаксисом SQL Server в CREATE DATABASE (SQL Server T-SQL), чтобы убедиться, что все используемые параметры поддерживаются. Инструкция CREATE DATABASE для Базы данных SQL Azure также располагает параметрами для цели службы и параметрами эластичного пула, которые применяются только к Базе данных SQL.
  • У инструкций CREATE TABLE и ALTER TABLE есть параметры FILETABLE и FILESTREAM, которые нельзя использовать в Базе данных SQL, так как эти возможности не поддерживаются.
  • Создание, изменение или удаление пользовательских объектов, таких как таблицы, представления или хранимые процедуры с помощью соответствующих CREATEALTERDROP инструкций и инструкций в master базе данных на логическом сервере, не поддерживается.
  • CREATE LOGIN поддерживаются и ALTER LOGIN операторы, но не предлагают все варианты, доступные в SQL Server. Чтобы сделать базу данных более переносимой, база данных SQL рекомендует по возможности вместо имен входа использовать пользователей автономной базы данных. Дополнительные сведения см. в статье CREATE LOGIN, ALTER LOGIN и Авторизация доступа к базе данных SQL, Управляемому экземпляру SQL и Azure Synapse Analytics.

Синтаксис T-SQL, не поддерживаемый в Базе данных SQL Azure

Помимо инструкций T-SQL, связанных с неподдерживаемые функции, описанные в сравнении функций: База данных SQL Azure и Управляемый экземпляр SQL Azure, следующие инструкции и группы инструкций не поддерживаются. Таким образом, если база данных, которую нужно перенести, использует любую их следующих функций, перестройте ваше приложение, чтобы исключить эти функции и инструкции T-SQL.

  • Параметры сортировки системных объектов.
  • Связанные с подключением: инструкции ENDPOINT. База данных SQL не поддерживает проверка подлинности Windows, но поддерживает проверку подлинности Microsoft Entra. Это включает проверку подлинности субъектов Active Directory, федеративных с идентификатором Microsoft Entra. Дополнительные сведения см. в статье Microsoft Entra authentication for Azure SQL.
  • Запросы между базами данных и между экземплярами с использованием имен, состоящих из трех или четырех элементов. Поддерживаются имена из трех элементов, ссылающихся на базу данных tempdb и текущую базу данных. Эластичный запрос поддерживает ссылки только для чтения на таблицы в других базах данных MSSQL.
  • Межбазовые цепочки владения и свойство базы данных TRUSTWORTHY.
  • EXECUTE AS LOGIN. Вместо этого используйте EXECUTE AS USER.
  • Расширенное управление ключами для ключей шифрования. Прозрачные ключи шифрования данных (TDE), управляемые клиентом , и главные ключи столбцов 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и REVOKEDENY разрешения уровня сервера не поддерживаются. Некоторые разрешения уровня сервера заменяются разрешениями уровня базы данных или неявно предоставляются встроенными ролями сервера. Некоторые динамические административные представления и представления каталога на уровне сервера имеют похожие представления уровня базы данных.
  • 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, использовании и примерах см. вTransact-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 или Параллельному хранилищу данных.

В некоторых случаях функция или инструкция, рассматриваемая в статье, может использоваться в продукте, однако по-разному поддерживаться в разных продуктах. Эти различия отмечаются по мере изложения материала. Например, статья CREATE TRIGGER доступна в Базе данных SQL. Но параметр ALL SERVER для триггеров уровня сервера указывает, что триггеры уровня сервера нельзя использовать в Базе данных SQL. Вместо них следует использовать триггеры уровня базы данных.