Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Synapse SQL — это служба аналитики больших данных, которая позволяет запрашивать и анализировать данные с помощью языка T-SQL. Для анализа данных можно использовать стандартный диалект ЯЗЫКА SQL, совместимый с ANSI, используемый в SQL Server и Базе данных SQL Azure.
язык Transact-SQL используется в бессерверном пуле SQL и выделенной модели, которые могут ссылаться на различные объекты и имеют некоторые отличия в наборе поддерживаемых функций. На этой странице вы можете найти высокоуровневые различия в языке Transact-SQL между моделями потребления Synapse SQL.
Объекты базы данных
Модели потребления в Synapse SQL позволяют использовать различные объекты базы данных. Сравнение поддерживаемых типов объектов показано в следующей таблице:
| Object | Dedicated | Serverless |
|---|---|---|
| Tables | Yes | Нет, таблицы в базе данных не поддерживаются. Бессерверный пул SQL может запрашивать только внешние таблицы , ссылающиеся на данные, хранящиеся в хранилище Azure Data Lake или Dataverse. |
| Views | Yes. Представления могут использовать элементы языка запросов , доступные в выделенной модели. | Да, можно создавать представления по внешним таблицам, запросы с помощью функции OPENROWSET и других представлений. Представления могут использовать элементы языка запросов , доступные в бессерверной модели. |
| Schemas | Yes | Да, поддерживаются схемы. Используйте схемы для изоляции различных арендаторов и размещения их таблиц по схемам. |
| Временные таблицы | Yes | Временные таблицы могут использоваться только для хранения некоторых сведений из системных представлений, литералов или других временных таблиц. Операции UPDATE/DELETE во временной таблице также поддерживаются. Вы можете присоединить временные таблицы к системным представлениям. Невозможно выбрать данные из внешней таблицы, чтобы вставить ее во временную таблицу или присоединить временную таблицу с внешней таблицей. Эти операции завершаются ошибкой, так как внешние данные и временные таблицы не могут быть смешанными в одном запросе. |
| Определяемые пользователем процедуры | Yes | Да, хранимые процедуры можно размещать в любых пользовательских базах данных (но не в master базе данных). Процедуры могут просто считывать внешние данные и использовать элементы языка запросов , доступные в бессерверном пуле. |
| Определяемые пользователем функции | Yes | Да, поддерживаются только встроенные табличные функции. Скалярные пользовательские функции не поддерживаются. |
| Triggers | No | Нет, бессерверные пулы SQL не позволяют изменять данные, поэтому триггеры не могут реагировать на изменения данных. |
| внешние таблицы | Yes. См. поддерживаемые форматы данных. | Да, внешние таблицы доступны и могут использоваться для чтения данных из хранилища Azure Data Lake или Dataverse. См. поддерживаемые форматы данных. |
| Кэширование запросов | Да, несколько форм (кэширование на основе SSD, в памяти, кэширование результатов). Кроме того, поддерживаются материализованные представления. | Нет, кэшируются только статистические данные файлов. |
| Кэширование результирующих наборов | Yes | Нет, результаты запроса не кэшируются. Кэшируются только статистические данные файлов. |
| материализованные представления | Yes | Нет, материализованные представления не поддерживаются в бессерверных пулах SQL. |
| Табличные переменные | Нет, используйте временные таблицы | Нет, табличные переменные не поддерживаются. |
| Распределение таблиц | Yes | Нет, дистрибутивы таблиц не поддерживаются. |
| Индексы таблиц | Yes | Нет, индексы не поддерживаются. |
| Секционирование таблиц | Yes. | Внешние таблицы не поддерживают секционирование. Файлы можно секционировать с помощью структуры папок Hive-partition и создания секционированных таблиц в Spark. Секционирование Spark будет синхронизировано с бессерверным пулом. Если вы не используете Spark, вы можете секционировать файлы в структуре папок и создавать секционированные представления в структуре секционирования папок, но внешние таблицы нельзя создать в секционированных папках. |
| Statistics | Yes | Да, статистика создается во внешних файлах. |
| Управление рабочей нагрузкой, классы ресурсов и управление параллелизмом | Да, см. управление рабочей нагрузкой, классы ресурсов и управление параллелизмом. | Нет, вы не можете управлять ресурсами, назначенными запросам. Бессерверный пул SQL автоматически управляет ресурсами. |
| Управление затратами | Да, с использованием действий масштабирования вверх и вниз. | Да, вы можете ограничить ежедневное, еженедельное или ежемесячное использование бессерверного пула с помощью портала Azure или процедуры T-SQL. |
Язык запросов
Языки запросов, используемые в Synapse SQL, могут иметь разные поддерживаемые функции в зависимости от модели потребления. В следующей таблице описаны наиболее важные различия языка запросов в Transact-SQL диалектах:
| Statement | Dedicated | Serverless |
|---|---|---|
| Оператор SELECT | Yes.
SELECT оператор поддерживается, но некоторые предложения запросов Transact-SQL, такие как FOR XML/FOR JSON, MATCH, OFFSET/FETCH, не поддерживаются. |
Да, оператор SELECT поддерживается, но некоторые предложения запросов Transact-SQL, такие как FOR XML, MATCH, PREDICT, GROUPING SETS, и подсказки запроса не поддерживаются. |
| Инструкция INSERT | Yes | No. Отправка новых данных в Data Lake с помощью Spark или других средств. Используйте Azure Cosmos DB с аналитическим хранилищем для высоко транзакционных рабочих нагрузок. С помощью CETAS можно создать внешнюю таблицу и вставить данные. |
| Оператор UPDATE | Yes | Нет, обновите данные Parquet/CSV с помощью Spark, и изменения будут автоматически доступны в бессерверном пуле. Используйте Azure Cosmos DB с аналитическим хранилищем для высоко транзакционных рабочих нагрузок. |
| Инструкция DELETE | Yes | Нет, удалите данные Parquet/CSV с помощью Spark, и изменения будут автоматически доступны в бессерверном пуле. Используйте Azure Cosmos DB с аналитическим хранилищем для высоко транзакционных рабочих нагрузок. |
| Инструкция MERGE | Да (предварительная версия) | Нет, объединяйте данные Parquet/CSV с помощью Spark, и изменения будут автоматически доступны в бессерверном пуле. |
| Запрос CTAS | Yes | Нет, инструкция CREATE TABLE AS SELECT не поддерживается в бессерверном пуле SQL. |
| Заявление CETAS | Да, вы можете выполнить начальную загрузку во внешнюю таблицу с помощью CETAS. | Да, вы можете выполнить начальную загрузку во внешнюю таблицу с помощью CETAS. CETAS поддерживает форматы выходных данных Parquet и CSV. |
| Transactions | Yes | Да, транзакции применимы только к объектам метаданных. |
| Labels | Yes | Нет, метки не поддерживаются в бессерверных пулах SQL. |
| Загрузка данных | Yes. Предпочтительная служебная программа — инструкция COPY , но система поддерживает как массовую загрузку (BCP), так и CETAS для загрузки данных. | Нет, нельзя загрузить данные в бессерверный пул SQL, так как данные хранятся во внешнем хранилище. Изначально данные можно загрузить в внешнюю таблицу с помощью инструкции CETAS. |
| Экспорт данных | Yes. Использование CETAS. | Yes. Вы можете экспортировать данные из внешнего хранилища (Azure Data Lake, Dataverse, Azure Cosmos DB) в озеро данных Azure с помощью CETAS. |
| Types | Да, все Transact-SQL типы, кроме курсора, hierarchyid, ntext, текста и изображения, rowversion, Пространственные типы, sql_variant и xml | Да, поддерживаются все типы Transact-SQL, кроме cursor, hierarchyid, ntext, text и image, rowversion, Spatial Types, sql_variant, xml и Table type. Узнайте, как сопоставить типы столбцов Parquet с типами SQL. |
| Запросы баз данных | No | Да, кросс-базовые запросы и ссылки на 3-частные имена поддерживаются, включая инструкцию USE. Запросы могут ссылаться на бессерверные базы данных SQL или базы данных Lake в той же рабочей области. Запросы между рабочими областями не поддерживаются. |
| Встроенные или системные функции (анализ) | Да, все Transact-SQL аналитика, преобразование, дата и время, логические, математические функции, кроме ВЫБОР и PARSE | Да, поддерживаются все функции Transact-SQL аналитики , преобразования, даты и времени, логических и математических функций. |
| Встроенные или системные функции (строка) | Yes. Все функции Transact-SQL, относящиеся к строковым, JSON и функциям сравнения, кроме STRING_ESCAPE и TRANSLATE | Yes. Поддерживаются все функции Transact-SQL String, JSON и сопоставления. |
| Встроенные или системные функции (криптография) | Some |
HASHBYTES — единственная поддерживаемая криптографическая функция в бессерверных пулах SQL. |
| Встроенные или системные функции табличного значения | Да, Transact-SQL функции набора строк, кроме OPENXML, OPENDATASOURCE, OPENQUERY и OPENROWSET | Да, поддерживаются все функции набора строкTransact-SQL , кроме OPENXML, OPENDATASOURCE и OPENQUERY. |
| Системные агрегаты | Transact-SQL встроенные функции агрегирования, кроме CHECKSUM_AGG и GROUPING_ID | Да, поддерживаются все встроенные агрегаты Transact-SQL. |
| Operators | Да, все операторы Transact-SQL за исключением !> и !< | Да, поддерживаются все операторыTransact-SQL . |
| Управление потоком | Yes. Все операторы управления потоком Transact-SQL, кроме CONTINUE, GOTO, RETURN, USE и WAITFOR | Yes. Поддерживаются все Transact-SQL операторы управления потоками . Запрос SELECT в WHILE (...) условии не поддерживается. |
| Инструкции DDL (CREATE, ALTER, DROP) | Yes. Все инструкции DDL Transact-SQL, применимые к поддерживаемым типам объектов | Да, поддерживаются все инструкции DDL Transact-SQL, применимые к поддерживаемым типам объектов. |
Security
Пулы Synapse SQL позволяют использовать встроенные функции безопасности для защиты данных и управления доступом. В следующей таблице сравниваются высокие различия между моделями потребления Synapse SQL.
| Feature | Dedicated | Serverless |
|---|---|---|
| Logins | N/A (в базах данных поддерживаются только встроенные пользователи) | Да, поддерживаются идентификаторы Microsoft Entra на уровне сервера и имена входа SQL. |
| Users | N/A (в базах данных поддерживаются только пользователи, ограниченные определенными условиями) | Да, поддерживаются пользователи базы данных. |
| Ограниченные пользователи | Yes. Примечание. Только один пользователь Microsoft Entra может быть неограниченным администратором | Нет, включенные пользователи не поддерживаются. |
| Проверка подлинности имени пользователя и пароля SQL | Yes | Да, пользователи могут получить доступ к бессерверному пулу SQL с помощью своих имен пользователей и паролей. |
| Проверка подлинности Microsoft Entra | Да, пользователи Microsoft Entra | Да, логины и пользователи Microsoft Entra могут получить доступ к бессерверным пулам SQL с помощью удостоверений Microsoft Entra. |
| Сквозная проверка подлинности Microsoft Entra | Yes | Да, сквозная проверка подлинности Microsoft Entra применима к входам в систему Microsoft Entra. Идентификатор пользователя Microsoft Entra передается в хранилище, если учетные данные не указаны. Сквозная аутентификация Microsoft Entra недоступна для пользователей SQL. |
| Проверка подлинности маркера подписанного URL-адреса хранилища (SAS) | No | Да, использование DATABASE SCOPED CREDENTIAL с маркером общей подписи доступа в EXTERNAL DATA SOURCE или учетными данными уровня экземпляра с общей подписью доступа. |
| Проверка подлинности ключа доступа к хранилищу | Да, использование УЧЕТНЫХ ДАННЫХ, ОГРАНИЧЕННЫХ ОБЛАСТЬЮ БАЗЫ ДАННЫХ В ВНЕШНЕМ ИСТОЧНИКЕ ДАННЫХ | Нет, используйте маркер SAS вместо ключа доступа к хранилищу. |
| Аутентификация управляемого удостоверения для хранилища | Да, с использованием учетных данных с управляемой идентичностью службы | Да, запрос может получить доступ к хранилищу с помощью учетных данных управляемого удостоверения рабочей области. |
| Аутентификация идентификатора приложения хранилища/основного объекта службы (SPN) | Yes | Да, можно создать учетные данные с ID приложения сервисного принципала, который будет использоваться для аутентификации в хранилище. |
| Роли сервера | No | Да, поддерживаются роли sysadmin, public и другие серверные роли. |
| УЧЕТНЫЕ ДАННЫЕ УРОВНЯ СЕРВЕРА | No | Да, учетные данные уровня сервера используются OPENROWSET функцией, которая не использует явный источник данных. |
| Разрешения — уровень сервера | No | Да, например, CONNECT ANY DATABASE и SELECT ALL USER SECURABLES разрешить пользователю считывать данные из любых баз данных. |
| роли базы данных | Yes | Да, можно использовать db_ownerdb_datareader и db_ddladmin роли. |
| УЧЕТНЫЕ ДАННЫЕ В ОБЛАСТИ БАЗЫ ДАННЫХ | Да, используется во внешних источниках данных. | Да, учетные данные в области базы данных можно использовать во внешних источниках данных для определения метода проверки подлинности хранилища. |
| Разрешения — уровень базы данных | Yes | Да, вы можете предоставить, запретить или отозвать разрешения на объекты базы данных. |
| Разрешения — уровень схемы | Да, включая возможность предоставления (GRANT), отказа (DENY) и отзыва (REVOKE) разрешений для пользователей и учетных записей на схеме. | Да, вы можете указать разрешения на уровне схемы, включая возможность GRANT, DENY и REVOKE разрешений для пользователей или имен входа в схеме. |
| Разрешения — уровень объекта | Да, включая возможность предоставлять, отказывать и отзывать разрешения для пользователей. | Да, разрешения GRANT, DENY и REVOKE для пользователей и имен входа можно использовать в поддерживаемых системных объектах. |
| Разрешения — безопасность на уровне столбца | Yes | Безопасность на уровне столбцов поддерживается в бессерверных пулах SQL для представлений, а не для внешних таблиц. В случае внешних таблиц можно создать логическое представление поверх внешней таблицы, а затем применить безопасность на уровне столбцов. |
| Безопасность на уровне строк | Yes | Нет, встроенная поддержка безопасности на уровне строк отсутствует. Используйте пользовательские представления в качестве обходного решения. |
| Маскирование данных | Yes | Нет, встроенная маскировка данных не поддерживается в бессерверных пулах SQL. Используйте представления SQL-оболочки, которые явно маскируют некоторые столбцы в качестве обходного решения. |
| Встроенные или системные функции безопасности и идентификации | Некоторые Transact-SQL функции безопасности и операторы: CURRENT_USER, HAS_DBACCESSIS_MEMBERIS_ROLEMEMBERSESSION_USERSUSER_NAMESUSER_SNAMESYSTEM_USERUSERUSER_NAMEEXECUTE ASOPEN/CLOSE MASTER KEY |
Некоторые функции безопасности и операторы Transact-SQL поддерживаются: CURRENT_USER, HAS_DBACCESS, HAS_PERMS_BY_NAME, IS_MEMBER, IS_ROLEMEMBER, IS_SRVROLEMEMBER, SESSION_USER, SESSION_CONTEXT, SUSER_NAME, SUSER_SNAME, SYSTEM_USER, USER, USER_NAME, EXECUTE AS и REVERT. Функции безопасности нельзя использовать для запроса внешних данных (сохранить результат в переменной, которую можно использовать в запросе). |
| Прозрачное шифрование данных (TDE) | Yes | Нет, прозрачное шифрование данных не поддерживается. |
| Обнаружение данных и классификация | Yes | Нет, обнаружение и классификация данных не поддерживается. |
| Оценка уязвимостей | Yes | Нет, оценка уязвимостей недоступна. |
| Расширенная защита от угроз | Yes | Нет, Расширенная защита от угроз не поддерживается. |
| Auditing | Yes | Да, аудит поддерживается в бессерверных пулах SQL. |
| Правила брандмауэра | Yes | Да, правила брандмауэра можно задать на бессерверной конечной точке SQL. |
| Частная конечная точка | Yes | Да, частная конечная точка может быть задана в бессерверном пуле SQL. |
Выделенный пул SQL и бессерверный пул SQL используют стандартный язык Transact-SQL для запроса данных. Подробные различия см. в справочнике по языкуTransact-SQL.
Функции платформы
| Feature | Dedicated | Serverless |
|---|---|---|
| Scaling | Yes | Бессерверный пул SQL автоматически масштабируется в зависимости от рабочей нагрузки. |
| Pause/resume | Yes | Бессерверный пул SQL автоматически деактивируется, если он не используется и активируется при необходимости. Действие пользователя не требуется. |
| Резервные копии баз данных | Yes | No. Данные хранятся во внешних системах (ADLS, Cosmos DB), поэтому убедитесь, что вы выполняете резервное копирование данных в источнике. Убедитесь, что метаданные SQL (таблицы, представления, определения процедур и разрешения пользователей) сохраняются в системе управления версиями. Определения таблиц в базе данных Lake хранятся в метаданных Spark, поэтому убедитесь, что вы также храните определения таблиц Spark в системе контроля версий. |
| Восстановление базы данных | Yes | No. Данные хранятся во внешних системах (ADLS, Cosmos DB), поэтому для переноса данных необходимо восстановить исходные системы. Убедитесь, что метаданные SQL (таблица, представление, определения процедур и разрешения пользователя) находится в системе управления версиями, чтобы можно было повторно создать объекты SQL. Определения таблиц в базе данных Lake хранятся в метаданных Spark, поэтому убедитесь, что определения таблиц Spark также хранятся в системе управления версиями. |
Tools
Для запроса данных можно использовать различные средства для подключения к Synapse SQL.
| Tool | Dedicated | Serverless |
|---|---|---|
| Synapse Studio | Да, скрипты SQL | Да, скрипты SQL можно использовать в Synapse Studio. Используйте SSMS или Visual Studio Code вместо Synapse Studio, если вы возвращаете большой объем данных в результате. |
| Power BI | Yes | Да, Power BI можно использовать для создания отчетов по бессерверному пулу SQL. Для создания отчетов рекомендуется использовать режим импорта. |
| Служба Анализа Azure | Yes | Да, данные можно загрузить в службе Azure Analysis Service с помощью бессерверного пула SQL. |
| SQL Server Management Studio (SSMS) | Yes | Да, вы можете использовать SQL Server Management Studio для запроса бессерверного пула SQL. SSMS отображает только объекты, доступные в бессерверных пулах SQL. |
| расширение MSSQL для Visual Studio Code | Yes | Да, Visual Studio Code можно использовать для выполнения запросов к бессерверному пулу SQL. Поддерживаются скрипты SQL и записные книжки SQL. Visual Studio Code отображает только объекты, доступные в бессерверных пулах SQL. |
Note
SSMS можно использовать для подключения к бессерверному пулу SQL и запросу. Она частично поддерживается начиная с версии 18.5, ее можно использовать только для подключения и запроса.
Большинство приложений используют стандартный язык Transact-SQL могут запрашивать как выделенные, так и бессерверные модели потребления Synapse SQL.
Доступ к данным
Данные, которые анализируются, можно хранить в различных типах хранилища. В следующей таблице перечислены все доступные варианты хранения:
| Тип хранилища | Dedicated | Serverless |
|---|---|---|
| Внутреннее хранилище | Yes | Нет, данные помещаются в аналитическое хранилище Azure Data Lake или Azure Cosmos DB. |
| Azure Data Lake версии 2 | Yes | Да, можно использовать внешние таблицы и OPENROWSET функцию для чтения данных из ADLS. Узнайте, как настроить управление доступом. |
| Хранилище BLOB-объектов Azure | Yes | Да, можно использовать внешние таблицы и OPENROWSET функцию для чтения данных из хранилища BLOB-объектов Azure. Узнайте, как настроить управление доступом. |
| Azure SQL/SQL Server (удаленный) | No | Нет, бессерверный пул SQL не может ссылаться на базу данных SQL Azure. Вы можете ссылаться на бессерверные пулы SQL из SQL Azure с помощью эластичных запросов или связанных серверов. |
| Dataverse | Нет, данные Azure Cosmos DB можно загрузить в выделенный пул с помощью Azure Synapse Link в бессерверном пуле SQL (с помощью ADLS) или Spark. | Да, вы можете читать таблицы Dataverse, используя функциональность Azure Synapse Link для Dataverse с Azure Data Lake. |
| Хранилище транзакций Azure Cosmos DB | No | Нет, вы не можете получить доступ к контейнерам Azure Cosmos DB для обновления данных или чтения данных из хранилища транзакций Azure Cosmos DB. Используйте пулы Spark для обновления хранилища транзакций Azure Cosmos DB . |
| Аналитическое хранилище Azure Cosmos DB | Нет, данные Azure Cosmos DB можно загрузить в выделенный пул с помощью Azure Synapse Link в бессерверном пуле SQL (с помощью ADLS), ADF, Spark или другого средства загрузки. | Да, вы можете запросить аналитическое хранилище Azure Cosmos DB с помощью Azure Synapse Link. |
| Таблицы Apache Spark (в рабочей области) | No | Да, бессерверный пул может считывать таблицы PARQUET и CSV с помощью синхронизации метаданных. |
| Таблицы Apache Spark (удаленные) | No | Нет, бессерверный пул может получить доступ только к таблицам PARQUET и CSV, созданным в пулах Apache Spark в той же рабочей области Synapse. Однако можно вручную создать внешнюю таблицу, ссылающуюся на расположение внешней таблицы Spark. |
| Таблицы Databricks (удаленный доступ) | No | Нет, бессерверный пул может получить доступ только к таблицам PARQUET и CSV, созданным в пулах Apache Spark в той же рабочей области Synapse. Однако можно вручную создать внешнюю таблицу, которая ссылается на расположение таблицы Databricks. |
Форматы данных
Данные, которые анализируются, могут храниться в различных форматах хранилища. В следующей таблице перечислены все доступные форматы данных, которые можно проанализировать:
| Формат данных | Dedicated | Serverless |
|---|---|---|
| Delimited | Yes | Да, можно запросить файлы с разделителями. |
| CSV | Да (многозначные разделители не поддерживаются) | Да, можно запросить CSV-файлы. Для повышения производительности используется PARSER_VERSION 2.0, что обеспечивает более быстрый анализ. Если вы добавляете строки в CSV-файлы, убедитесь, что вы запрашиваете файлы как добавляемые. |
| Parquet | Yes | Да, можно запрашивать файлы Parquet, включая файлы с вложенными типами. |
| Улья ORC | Yes | Нет, бессерверные пулы SQL не могут читать формат Hive ORC. |
| Hive RC | Yes | Нет, бессерверные пулы SQL не могут читать формат RC Hive. |
| JSON | Yes | Да, вы можете запросить JSON-файлы с помощью текстового формата с разделителями и функций T-SQL JSON . |
| Avro | No | Нет, бессерверные пулы SQL не могут читать формат Avro. |
| Delta Lake | No | Да, можно запрашивать файлы Delta Lake, включая файлы с вложенными типами. |
| Общая модель данных (CDM) | No | Нет, бессерверный пул SQL не может считывать данные, хранящиеся с помощью общей модели данных. |
Дальнейшие шаги
Дополнительные сведения о рекомендациях по выделенному пулу SQL и бессерверному пулу SQL см. в следующих статьях: