CREATE EXTERNAL DATA SOURCE (Transact-SQL)CREATE EXTERNAL DATA SOURCE (Transact-SQL)

Создает внешний источник данных для создания запросов, использующих SQL Server, базы данных SQL, Azure Synapse Analytics или Систему платформы аналитики (Parallel Data Warehouse или PDW).Creates an external data source for querying using SQL Server, SQL Database, Azure Synapse Analytics, or Analytics Platform System (Parallel Data Warehouse or PDW).

Эта статья приводит синтаксис, аргументы, комментарии, разрешения и примеры для любых выбранных продуктов SQL.This article provides the syntax, arguments, remarks, permissions, and examples for whichever SQL product you choose.

Дополнительные сведения о соглашениях о синтаксисе см. в статье Соглашения о синтаксисе в Transact-SQL.For more information about the syntax conventions, see Transact-SQL Syntax Conventions.

Выберите продукт!Click a product!

В следующей строке щелкните имя продукта, который вас интересует.In the following row, click whichever product name you are interested in. На этой веб-странице отобразится другой контент, относящийся к выбранному продукту.The click displays different content here on this webpage, appropriate for whichever product you click.

* SQL Server *  * SQL Server *   База данных SQLSQL Database Azure Synapse
Analytics
Azure Synapse
Analytics
Analytics Platform
System (PDW)
Analytics Platform
System (PDW)

 

Общие сведения. SQL ServerOverview: SQL Server

Создает внешний источник данных для запросов PolyBase.Creates an external data source for PolyBase queries. Внешние источники данных используются для обеспечения взаимодействия и поддерживают следующие основные варианты использования.External data sources are used to establish connectivity and support these primary use cases:

  • Виртуализация и загрузка данных с помощью PolyBaseData virtualization and data load using PolyBase
  • Операции массовой загрузки с помощью BULK INSERT или OPENROWSETBulk load operations using BULK INSERT or OPENROWSET

Область применения: Начиная с SQL Server 2016 (13.x);SQL Server 2016 (13.x)Applies to: Starting with SQL Server 2016 (13.x);SQL Server 2016 (13.x)

СинтаксисSyntax

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CONNECTION_OPTIONS = '<name_value_pairs>']
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] PUSHDOWN = { ON | OFF } ]
    [ [ , ] TYPE = { HADOOP | BLOB_STORAGE } ]
    [ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]

АргументыArguments

data_source_namedata_source_name

Задает определенное пользователем имя для источника данных.Specifies the user-defined name for the data source. Имя должно быть уникальным в пределах базы данных в SQL ServerSQL Server.The name must be unique within the database in SQL ServerSQL Server.

LOCATION = '<prefix>://<path[:port]>'LOCATION = '<prefix>://<path[:port]>'

Предоставляет протокол и путь подключения к внешнему источнику данных.Provides the connectivity protocol and path to the external data source.

Внешний источник данныхExternal Data Source Префикс расположенияLocation prefix Путь к расположениюLocation path Поддерживаемые расположения по продукту или службеSupported locations by product / service
Cloudera или HortonworksCloudera or Hortonworks hdfs <Namenode>[:port] Начиная с SQL Server 2016 (13.x);SQL Server 2016 (13.x)Starting with SQL Server 2016 (13.x);SQL Server 2016 (13.x)
хранилище BLOB-объектов AzureAzure Blob Storage wasb[s] <container>@<storage_account>.blob.core.windows.net Начиная с SQL Server 2016 (13.x);SQL Server 2016 (13.x)Starting with SQL Server 2016 (13.x);SQL Server 2016 (13.x)
SQL ServerSQL Server sqlserver <server_name>[\<instance_name>][:port] Начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x)
Oracle;Oracle oracle <server_name>[:port] Начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x)
TeradataTeradata teradata <server_name>[:port] Начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x)
MongoDB или CosmosDBMongoDB or CosmosDB mongodb <server_name>[:port] Начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x)Starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x)
ODBCODBC odbc <server_name>[:port] Начиная с SQL Server 2019 (15.x)SQL Server 2019 (15.x) — только WindowsStarting with SQL Server 2019 (15.x)SQL Server 2019 (15.x) - Windows only
массовые операцииBulk Operations https <storage_account>.blob.core.windows.net/<container> Начиная с SQL Server 2017 (14.x);SQL Server 2017 (14.x)Starting with SQL Server 2017 (14.x);SQL Server 2017 (14.x)

Путь к расположению:Location path:

  • <Namenode>: имя компьютера или IP-адрес Namenode в Hadoop Namenode.<Namenode> = the machine name, name service URI, or IP address of the Namenode in the Hadoop cluster. PolyBase необходимо разрешить любые DNS-имена, используемые в кластере Hadoop.PolyBase must resolve any DNS names used by the Hadoop cluster.
  • port: порт, который прослушивает внешний источник данных.port = The port that the external data source is listening on. В Hadoop порт можно найти, используя параметр конфигурации fs.defaultFS.In Hadoop, the port can be found using the fs.defaultFS configuration parameter. Значение по умолчанию — 8020.The default is 8020.
  • <container>: контейнер учетной записи хранения, содержащей данные.<container> = the container of the storage account holding the data. Корневые контейнеры доступны только для чтения, записать данные в контейнер невозможно.Root containers are read-only, data can't be written back to the container.
  • <storage_account>: имя учетной записи хранения Azure.<storage_account> = the storage account name of the azure resource.
  • <server_name>: имя узла.<server_name> = the host name.
  • <instance_name>: имя экземпляра SQL Server.<instance_name> = the name of the SQL Server named instance. Используется, если у вас работает служба обозревателя SQL Server на целевом экземпляре.Used if you have SQL Server Browser Service running on the target instance.

Дополнительные примечания и инструкции при задании расположения:Additional notes and guidance when setting the location:

  • Компонент SQL Server Database EngineSQL Server Database Engine не проверяет существование внешнего источника данных, когда создает объект.The Компонент SQL Server Database EngineSQL Server Database Engine doesn't verify the existence of the external data source when the object is created. Для проверки при создании внешней таблицы используйте внешний источник данных.To validate, create an external table using the external data source.
  • Используйте один и тот же внешний источник данных для всех таблиц при запросе Hadoop, чтобы обеспечить согласованность семантики запросов.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • Префикс расположения sqlserver можно использовать для подключения SQL Server 2019 (15.x)SQL Server 2019 (15.x) к другому SQL ServerSQL Server, База данных SQL AzureAzure SQL Database или к Azure Synapse Analytics.You can use the sqlserver location prefix to connect SQL Server 2019 (15.x)SQL Server 2019 (15.x) to another SQL ServerSQL Server, to База данных SQL AzureAzure SQL Database, or to Azure Synapse Analytics.
  • Укажите Driver={<Name of Driver>} при подключении через ODBC.Specify the Driver={<Name of Driver>} when connecting via ODBC.
  • wasb — протокол по умолчанию для хранилища больших двоичных объектов Azure.wasb is the default protocol for Azure blob storage. wasbs является необязательным, но рекомендуется, так как тогда данные будут передаваться по защищенному каналу SSL.wasbs is optional but recommended as data will be sent using a secure SSL connection.
  • Чтобы обеспечить успешное выполнение запросов PolyBase в случае отработки отказа Hadoop Namenode, целесообразно использовать для Namenode кластера Hadoop виртуальный IP-адрес.To ensure successful PolyBase queries during a Hadoop Namenode fail-over, consider using a virtual IP address for the Namenode of the Hadoop cluster. Если этого не сделать, следует выполнить команду ALTER EXTERNAL DATA SOURCE, чтобы указать новое расположение.If you don't, execute an ALTER EXTERNAL DATA SOURCE command to point to the new location.

CONNECTION_OPTIONS = пара "ключ-значение"CONNECTION_OPTIONS = key_value_pair

Указывает дополнительные параметры при подключении через ODBC к внешнему источнику данных.Specifies additional options when connecting over ODBC to an external data source.

Имя драйвера необходимо, но существуют и другие параметры, такие как APP='<your_application_name>' или ApplicationIntent= ReadOnly|ReadWrite, которые полезно задать, так как они могут помочь в устранении неполадок.The name of the driver is required as a minimum, but there are other options such as APP='<your_application_name>' or ApplicationIntent= ReadOnly|ReadWrite that are also useful to set and can assist with troubleshooting.

См. в документации по продукту ODBC список разрешенных CONNECTION_OPTIONSRefer to the ODBC product documentation for a list of permitted CONNECTION_OPTIONS

PUSHDOWN = ON | OFFPUSHDOWN = ON | OFF

Указывает, могут ли вычисления быть переданы во внешний источник данных.States whether computation can be pushed down to the external data source. Параметр включен по умолчанию.It is on by default.

PUSHDOWN поддерживается при подключении к SQL Server, Oracle, Teradata, MongoDB или ODBC на уровне внешнего источника данных.PUSHDOWN is supported when connecting to SQL Server, Oracle, Teradata, MongoDB, or ODBC at the external data source level.

Включение или отключение параметра на уровне запроса достигается за счет указаний.Enabling or disabling push-down at the query level is achieved through a hint.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Задает учетные данные уровня базы данных для аутентификации во внешнем источнике данных.Specifies a database-scoped credential for authenticating to the external data source.

Дополнительные примечания и инструкции при задании учетных данных:Additional notes and guidance when creating a credential:

  • CREDENTIAL требуется, только если большой двоичный объект был защищен.CREDENTIAL is only required if the blob has been secured. CREDENTIAL не является обязательным для наборов данных с возможностью анонимного доступа.CREDENTIAL isn't required for data sets that allow anonymous access.
  • При = BLOB_STORAGE``SHARED ACCESS SIGNATURE учетные данные необходимо создавать, используя TYPE в качестве удостоверения.When the TYPE = BLOB_STORAGE the credential must be created using SHARED ACCESS SIGNATURE as the identity. Кроме того, маркер SAS должен создаваться следующим образом:Furthermore, the SAS token should be configured as follows:
    • Исключите начальные ? при настройке в качестве секретаExclude the leading ? when configured as the secret
    • Задайте по меньшей мере разрешение на чтение для файла, который требуется загрузить (например, srt=o&sp=r)Have at least read permission on the file that should be loaded (for example srt=o&sp=r)
    • Используйте допустимый срок действия (все даты указываются в формате UTC).Use a valid expiration period (all dates are in UTC time).

Пример использования CREDENTIAL с SHARED ACCESS SIGNATURE и TYPE = BLOB_STORAGE см. в разделе Создание внешнего источника данных для выполнения массовых операций и извлечения данных из хранилища BLOB-объектов Azure в базу данных SQLFor an example of using a CREDENTIAL with SHARED ACCESS SIGNATURE and TYPE = BLOB_STORAGE, see Create an external data source to execute bulk operations and retrieve data from Azure Blob Storage into SQL Database

Сведения о создании учетных данных уровня базы данных см. в разделе CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To create a database scoped credential, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [ HADOOP | BLOB_STORAGE ]TYPE = [ HADOOP | BLOB_STORAGE ]

Указывает тип настраиваемого внешнего источника данных.Specifies the type of the external data source being configured. Этот параметр требуется не всегда.This parameter isn't always required.

  • Используйте HADOOP, если внешний источник данных — Cloudera, Hortonworks или хранилище BLOB-объектов Azure.Use HADOOP when the external data source is Cloudera, Hortonworks, or Azure Blob Storage.
  • Используйте BLOB_STORAGE при выполнении пакетных операций с использованием инструкций BULK INSERT или OPENROWSET с SQL Server 2017 (14.x);SQL Server 2017 (14.x).Use BLOB_STORAGE when executing bulk operations with BULK INSERT, or OPENROWSET with SQL Server 2017 (14.x);SQL Server 2017 (14.x).

Важно!

Не устанавливайте TYPE при использовании любого другого источника внешних данных.Do not set TYPE if using any other external data source.

Пример использования TYPE = HADOOP для загрузки данных из хранилища BLOB-объектов Azure см. в разделе Создание внешнего источника данных для ссылки на хранилище больших двоичных объектов.For an example of using TYPE = HADOOP to load data from Azure Blob Storage, see Create external data source to reference Azure blob storage.

RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:порт]'RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:port]'

Настройте это необязательное значение при подключении к Hortonworks или Cloudera.Configure this optional value when connecting to Hortonworks or Cloudera.

Если RESOURCE_MANAGER_LOCATION определен, оптимизатор запросов будет принимать решение на основе затрат для повышения производительности.When the RESOURCE_MANAGER_LOCATION is defined, the Query Optimizer will make a cost-based decision to improve performance. Задание MapReduce можно использовать, чтобы передать вычисления в Hadoop.A MapReduce job can be used to push down the computation to Hadoop. Указание RESOURCE_MANAGER_LOCATION может значительно сократить объем данных, передаваемых между Hadoop и SQL ServerSQL Server, повышая производительность запросов.Specifying the RESOURCE_MANAGER_LOCATION can significantly reduce the volume of data transferred between Hadoop and SQL ServerSQL Server, which can lead to improved query performance.

Если значение для Resource Manager не задано, отправка вычислений в Hadoop для запросов PolyBase отключена.If the Resource Manager isn't specified, pushing compute to Hadoop is disabled for PolyBase queries.

Если порт не задан, значение по умолчанию определяется с использованием текущей настройки для конфигурации подключения к Hadoop (hadoop connectivity).If the port isn't specified, the default value is chosen using the current setting for 'hadoop connectivity' configuration.

Подключение к HadoopHadoop Connectivity Порт по умолчанию диспетчера ресурсовDefault Resource Manager Port
11 5030050300
22 5030050300
33 80218021
44 80328032
55 80508050
66 80328032
77 80508050

Полный список поддерживаемых версий Hadoop см. в разделе Конфигурация подключений PolyBase (Transact-SQL).For a complete list of supported Hadoop versions, see PolyBase Connectivity Configuration (Transact-SQL).

Важно!

Значение RESOURCE_MANAGER_LOCATION не проверяется при создании внешнего источника данных.The RESOURCE_MANAGER_LOCATION value is not validated when you create the external data source. Указание неверного значения может вызвать сбой запроса во время выполнения каждый раз, когда выполняется попытка принудительной передачи, так как переданное значение невозможно разрешить.Entering an incorrect value may cause query failure at execution time whenever push-down is attempted as the provided value would not be able to resolve.

См. конкретный пример и дальнейшие рекомендации в разделе Создание внешнего источника данных для ссылки на Hadoop с поддержкой передачи.Create external data source to reference Hadoop with push-down enabled provides a concrete example and further guidance.

РазрешенияPermissions

Требуется разрешение CONTROL для базы данных в SQL ServerSQL Server.Requires CONTROL permission on database in SQL ServerSQL Server.

БлокировкаLocking

Принимает совмещаемую блокировку для объекта EXTERNAL DATA SOURCE.Takes a shared lock on the EXTERNAL DATA SOURCE object.

БезопасностьSecurity

PolyBase поддерживает проверку подлинности на основе прокси-сервера для большинства внешних источников данных.PolyBase supports proxy based authentication for most external data sources. Создайте учетные данные уровня базы данных для создания учетной записи-посредника.Create a database scoped credential to create the proxy account.

При подключении к хранилищу или пулу данных в кластере больших данных SQL Server учетные данные пользователя передаются через серверную систему.When you connect to the storage or data pool in a SQL Server big data cluster, the user's credentials are passed through to the back-end system. Создайте имена входа в пуле данных, чтобы включить сквозную проверку подлинности.Create logins in the data pool itself to enable pass through authentication.

Сейчас маркер SAS с типом HADOOP не поддерживается.Currently a SAS token with type HADOOP is unsupported. Он поддерживается только с ключом доступа учетной записи хранения.It's only supported with a storage account access key. Попытка создать внешний источник данных с типом HADOOP и использованием учетных данных SAS может завершиться сбоем со следующим сообщением об ошибке:Attempting to create an external data source with type HADOOP and a SAS credential fails with the following error:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Примеры (начиная с SQL Server 2016 (13.x);SQL Server 2016 (13.x))Examples (Starting with SQL Server 2016 (13.x);SQL Server 2016 (13.x))

Важно!

Сведения о том, как установить и включить PolyBase, см. в разделе Установка PolyBase в Windows.For information on how to install and enable PolyBase, see Install PolyBase on Windows

A.A. Создание внешнего источника данных в SQL Server 2019 для ссылки на OracleCreate external data source in SQL Server 2019 to reference Oracle

Чтобы создать внешний источник данных, ссылающийся на Oracle, убедитесь, что у вас есть учетные данные уровня базы данных.To create an external data source that references Oracle, ensure you have a database scoped credential. При необходимости также может включить или отключить передачу вычислений к этому источнику данных.You may optionally also enable or disable push-down of computation against this data source.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '!MyC0mpl3xP@ssw0rd!' ;

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL OracleProxyAccount
WITH
     IDENTITY = 'oracle_username',
     SECRET = 'oracle_password' ;

CREATE EXTERNAL DATA SOURCE MyOracleServer
WITH
  ( LOCATION = 'oracle://145.145.145.145:1521',
    CREDENTIAL = OracleProxyAccount,
    PUSHDOWN = ON
  ) ;

Дополнительные примеры для других источников данных, таких как MongoDB, см. в разделе Настройка PolyBase для доступа к внешним данным в MongoDB.For additional examples to other data sources such as MongoDB, see Configure PolyBase to access external data in MongoDB

Б.B. Создание внешнего источника данных для ссылки на HadoopCreate external data source to reference Hadoop

Чтобы создать внешний источник данных для ссылки на кластер Hadoop Hortonworks или Cloudera Hadoop, укажите имя компьютера или IP-адрес Namenode и порта Hadoop.To create an external data source to reference your Hortonworks or Cloudera Hadoop cluster, specify the machine name, or IP address of the Hadoop Namenode and port.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    TYPE = HADOOP
  ) ;

В.C. Создание внешнего источника данных для ссылки на Hadoop с включенной отправкойCreate external data source to reference Hadoop with push-down enabled

Укажите параметр RESOURCE_MANAGER_LOCATION, чтобы включить принудительную передачу вычислений в Hadoop для запросов PolyBase.Specify the RESOURCE_MANAGER_LOCATION option to enable push-down computation to Hadoop for PolyBase queries. После включения PolyBase принимает решение на основе затрат для определения того, должны ли вычисления запроса быть переданы в Hadoop.Once enabled, PolyBase makes a cost-based decision to determine whether the query computation should be pushed to Hadoop.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8020' ,
    TYPE = HADOOP ,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
  ) ;

Г.D. Создание внешнего источника данных для ссылки на Hadoop с защитой KerberosCreate external data source to reference Kerberos-secured Hadoop

Чтобы проверить, защищен ли кластер Hadoop протоколом Kerberos, проверьте значение свойства hadoop.security.authentication в файле Hadoop core-site.xml.To verify if the Hadoop cluster is Kerberos-secured, check the value of hadoop.security.authentication property in Hadoop core-site.xml. Чтобы сослаться на кластер Hadoop с защитой Kerberos, необходимо указать учетные данные с областью действия "база данных", которые содержат ваше имя пользователя и пароль Kerberos.To reference a Kerberos-secured Hadoop cluster, you must specify a database scoped credential that contains your Kerberos username and password. Главный ключ базы данных используется для шифрования секрета учетных данных с областью действия "база данных".The database master key is used to encrypt the database scoped credential secret.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH
     IDENTITY = '<hadoop_user_name>',
     SECRET = '<hadoop_password>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    CREDENTIAL = HadoopUser1 ,
    TYPE = HADOOP ,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
  );

Д.E. Создание внешнего источника данных для ссылки на хранилище BLOB-объектов AzureCreate external data source to reference Azure blob storage

В этом примере внешний источник данных представляет собой контейнер хранилища BLOB-объектов Azure под названием daily в учетной записи хранения Azure с именем logs.In this example, the external data source is an Azure blob storage container called daily under Azure storage account named logs. Внешний источник данных хранилища Azure предназначен исключительно для передачи данных,The Azure storage external data source is for data transfer only. отправка предиката не поддерживается.It doesn't support predicate push-down.

В этом примере показано, как создать учетные данные с областью действия "база данных" для аутентификации в хранилище Azure.This example shows how to create the database scoped credential for authentication to Azure storage. Укажите ключ учетной записи хранения Azure в секрете учетных данных базы данных.Specify the Azure storage account key in the database credential secret. Укажите любую строку в удостоверении учетных данных с областью действия "база данных"; для проверки подлинности в хранилище Azure эти данные не используются.You can specify any string in database scoped credential identity as it isn't used during authentication to Azure storage.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
  IDENTITY = '<my_account>' ,
  SECRET = '<azure_storage_account_key>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH
  ( LOCATION = 'wasbs://daily@logs.blob.core.windows.net/' ,
    CREDENTIAL = AzureStorageCredential ,
    TYPE = BLOB_STORAGE
  ) ;

Е.F. Создание внешнего источника данных для ссылки на именованный экземпляр SQL Server через соединение Polybase (SQL Server 2019 (15.x)SQL Server 2019 (15.x))Create external data source to reference a SQL Server named instance via Polybase connectivity (SQL Server 2019 (15.x)SQL Server 2019 (15.x))

Чтобы создать внешний источник данных, ссылающийся на именованный экземпляр SQL ServerSQL Server, можно использовать CONNECTION_OPTIONS для указания имени экземпляра.To create an external data source that references a named instance of SQL ServerSQL Server, you can use CONNECTION_OPTIONS to specify the instance name. В приведенном ниже примере WINSQL2019 — это имя узла, а SQL2019 — имя экземпляра.In below example, WINSQL2019 is the host name and SQL2019 is the instance name.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
  LOCATION = 'sqlserver://WINSQL2019' ,
  CONNECTION_OPTIONS = 'Server=%s\SQL2019' ,
  CREDENTIAL = SQLServerCredentials
) ;

Кроме того, можно использовать порт для подключения к экземпляру SQL ServerSQL Server.Alternatively, you can use a port to connect to a SQL ServerSQL Server instance.

CREATE EXTERNAL DATA SOURCE SQLServerInstance2
WITH (
  LOCATION = 'sqlserver://WINSQL2019:58137' ,
  CREDENTIAL = SQLServerCredentials
) ;

Примеры: массовые операцииExamples: Bulk Operations

Важно!

Не следует добавлять / , имя файла или параметры подписи общего доступа в конце URL-адреса LOCATION при настройке внешнего источника данных для массовых операций.Do not add a trailing /, file name, or shared access signature parameters at the end of the LOCATION URL when configuring an external data source for bulk operations.

Ж.G. Создание внешнего источника данных для массовых операций, извлекающих данные из хранилища BLOB-объектов AzureCreate an external data source for bulk operations retrieving data from Azure Blob storage

Область применения: SQL Server 2017 (14.x);SQL Server 2017 (14.x).Applies to: SQL Server 2017 (14.x);SQL Server 2017 (14.x). Используйте следующий источник данных для массовых операций, выполняемых с использованием инструкций BULK INSERT или OPENROWSET.Use the following data source for bulk operations using BULK INSERT or OPENROWSET. Используемые учетные данные должны задавать SHARED ACCESS SIGNATURE в качестве идентификатора, не должны иметь ? в начале маркера SAS, должны иметь по крайней мере разрешение на чтение загружаемого файла (например, srt=o&sp=r), и иметь допустимый срок действия (все даты должны быть указаны в формате UTC).The credential must set SHARED ACCESS SIGNATURE as the identity, mustn't have the leading ? in the SAS token, must have at least read permission on the file that should be loaded (for example srt=o&sp=r), and the expiration period should be valid (all dates are in UTC time). Дополнительные сведения о подписанных URL-адресах см. в статье Использование подписанных URL-адресов.For more information on shared access signatures, see Using Shared Access Signatures (SAS).

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH
  IDENTITY = 'SHARED ACCESS SIGNATURE',
  -- Remove ? from the beginning of the SAS token
  SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************' ;

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH
  ( LOCATION = 'https://newinvoices.blob.core.windows.net/week3' ,
    CREDENTIAL = AccessAzureInvoices ,
    TYPE = BLOB_STORAGE
  ) ;

Реализация этого примера доступна в разделе BULK INSERT.To see this example in use, see the BULK INSERT example.

См. также:See Also

SQL ServerSQL Server * База данных SQL *  * SQL Database *   Azure Synapse
Analytics
Azure Synapse
Analytics
Analytics Platform
System (PDW)
Analytics Platform
System (PDW)

 

Общие сведения. База данных SQL AzureOverview: Azure SQL Database

Создает внешний источник данных для эластичных запросов.Creates an external data source for elastic queries. Внешние источники данных используются для обеспечения взаимодействия и поддерживают следующие основные варианты использования.External data sources are used to establish connectivity and support these primary use cases:

  • Операции массовой загрузки с помощью BULK INSERT или OPENROWSETBulk load operations using BULK INSERT or OPENROWSET
  • Запрос удаленных экземпляров базы данных SQL или Azure Synapse Analytics через базу данных SQL с помощью эластичных запросовQuery remote SQL Database or Azure Synapse instances using SQL Database with elastic query
  • Запрос сегментированной базы данных SQL Azure с помощью эластичных запросовQuery a sharded Azure SQL Database using elastic query

СинтаксисSyntax

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = { BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER } ]
    [ [ , ] DATABASE_NAME = '<database_name>' ]
    [ [ , ] SHARD_MAP_NAME = '<shard_map_manager>' ] )
[ ; ]

АргументыArguments

data_source_namedata_source_name

Задает определенное пользователем имя для источника данных.Specifies the user-defined name for the data source. В базе данных SQL Server это имя должно быть уникальным.The name must be unique within the database in SQL Database.

LOCATION = '<prefix>://<path[:port]>'LOCATION = '<prefix>://<path[:port]>'

Предоставляет протокол и путь подключения к внешнему источнику данных.Provides the connectivity protocol and path to the external data source.

Внешний источник данныхExternal Data Source Префикс расположенияLocation prefix Путь к расположениюLocation path
массовые операцииBulk Operations https <storage_account>.blob.core.windows.net/<container>
Эластичный запрос (сегмент)Elastic Query (shard) Не требуетсяNot required <shard_map_server_name>.database.windows.net
Эластичный запрос (удаленный)Elastic Query (remote) Не требуетсяNot required <remote_server_name>.database.windows.net

Путь к расположению:Location path:

  • <shard_map_server_name>: имя логического сервера в Azure, на котором размещен диспетчер карт сегментов.<shard_map_server_name> = The logical server name in Azure that is hosting the shard map manager. Аргумент DATABASE_NAME задает базу данных, в которой размещается карта сегментов, а SHARD_MAP_NAME используется для самой карты сегментов.The DATABASE_NAME argument provides the database used to host the shard map and SHARD_MAP_NAME is used for the shard map itself.
  • <remote_server_name>: логическое имя целевого сервера для эластичного запроса.<remote_server_name> = The target logical server name for the elastic query. Имя базы данных задается с помощью аргумента DATABASE_NAME.The database name is specified using the DATABASE_NAME argument.

Дополнительные примечания и инструкции при задании расположения:Additional notes and guidance when setting the location:

  • Компонент Database EngineDatabase Engine не проверяет существование внешнего источника данных, когда создает объект.The Компонент Database EngineDatabase Engine doesn't verify the existence of the external data source when the object is created. Для проверки при создании внешней таблицы используйте внешний источник данных.To validate, create an external table using the external data source.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Задает учетные данные уровня базы данных для аутентификации во внешнем источнике данных.Specifies a database-scoped credential for authenticating to the external data source.

Дополнительные примечания и инструкции при задании учетных данных:Additional notes and guidance when creating a credential:

  • Для загрузки данных из хранилища BLOB-объектов Azure в База данных SQL AzureAzure SQL Database необходимо использовать ключ хранилища Azure.To load data from Azure Blob storage into База данных SQL AzureAzure SQL Database, use an Azure Storage Key.
  • CREDENTIAL требуется, только если большой двоичный объект был защищен.CREDENTIAL is only required if the blob has been secured. CREDENTIAL не является обязательным для наборов данных с возможностью анонимного доступа.CREDENTIAL isn't required for data sets that allow anonymous access.
  • При = BLOB_STORAGE``SHARED ACCESS SIGNATURE учетные данные необходимо создавать, используя TYPE в качестве удостоверения.When the TYPE = BLOB_STORAGE the credential must be created using SHARED ACCESS SIGNATURE as the identity. Кроме того, маркер SAS должен создаваться следующим образом:Furthermore, the SAS token should be configured as follows:
    • Исключите начальные ? при настройке в качестве секретаExclude the leading ? when configured as the secret
    • Задайте по меньшей мере разрешение на чтение для файла, который требуется загрузить (например, srt=o&sp=r)Have at least read permission on the file that should be loaded (for example srt=o&sp=r)
    • Используйте допустимый срок действия (все даты указываются в формате UTC).Use a valid expiration period (all dates are in UTC time).

Пример использования CREDENTIAL с SHARED ACCESS SIGNATURE и TYPE = BLOB_STORAGE см. в разделе Создание внешнего источника данных для выполнения массовых операций и извлечения данных из хранилища BLOB-объектов Azure в базу данных SQLFor an example of using a CREDENTIAL with SHARED ACCESS SIGNATURE and TYPE = BLOB_STORAGE, see Create an external data source to execute bulk operations and retrieve data from Azure Blob Storage into SQL Database

Сведения о создании учетных данных уровня базы данных см. в разделе CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To create a database scoped credential, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER]TYPE = [ BLOB_STORAGE | RDBMS | SHARD_MAP_MANAGER]

Указывает тип настраиваемого внешнего источника данных.Specifies the type of the external data source being configured. Этот параметр требуется не всегда.This parameter isn't always required.

  • Используйте RDBMS для запросов между базами данных с применением эластичных запросов из базы данных SQL.Use RDBMS for cross-database queries using elastic query from SQL Database.
  • Используйте SHARD_MAP_MANAGER при создании внешнего источника данных при подключении к сегментированной базе данных SQL.Use SHARD_MAP_MANAGER when creating an external data source when connecting to a sharded SQL Database.
  • Используйте BLOB_STORAGE при выполнении пакетных операций с использованием инструкций BULK INSERT или OPENROWSET.Use BLOB_STORAGE when executing bulk operations with BULK INSERT, or OPENROWSET.

Важно!

Не устанавливайте TYPE при использовании любого другого источника внешних данных.Do not set TYPE if using any other external data source.

DATABASE_NAME = имя базы данныхDATABASE_NAME = database_name

Настройте этот аргумент, если TYPE задан как RDBMS или SHARD_MAP_MANAGER.Configure this argument when the TYPE is set to RDBMS or SHARD_MAP_MANAGER.

TYPETYPE Значение DATABASE_NAMEValue of DATABASE_NAME
Реляционная СУБДRDBMS Имя удаленной базы данных на сервере, заданном с помощью LOCATIONThe name of the remote database on the server provided using LOCATION
SHARD_MAP_MANAGERSHARD_MAP_MANAGER Имя базы данных, работающей в качестве диспетчера карты сегментовName of the database operating as the shard map manager

Пример, демонстрирующий создание внешнего источника данных с TYPE = RDBMS, см. в разделе Создание внешнего источника данных в реляционной СУБДFor an example showing how to create an external data source where TYPE = RDBMS refer to Create an RDBMS external data source

SHARD_MAP_NAME = имя карты сегментовSHARD_MAP_NAME = shard_map_name

Используется, только когда аргумент TYPE имеет значение SHARD_MAP_MANAGER, для того, чтобы задать имя карты сегментов.Used when the TYPE argument is set to SHARD_MAP_MANAGER only to set the name of the shard map.

Пример, демонстрирующий создание внешнего источника данных с TYPE = SHARD_MAP_MANAGER, см. в разделе Создание диспетчера карты сегментов в реляционной СУБДFor an example showing how to create an external data source where TYPE = SHARD_MAP_MANAGER refer to Create a shard map manager external data source

РазрешенияPermissions

Требуется разрешение CONTROL для базы данных в База данных SQL AzureAzure SQL Database.Requires CONTROL permission on database in База данных SQL AzureAzure SQL Database.

БлокировкаLocking

Принимает совмещаемую блокировку для объекта EXTERNAL DATA SOURCE.Takes a shared lock on the EXTERNAL DATA SOURCE object.

Примеры:Examples:

A.A. Создание внешнего источника данных для диспетчера карт сегментовCreate a shard map manager external data source

Чтобы создать внешний источник данных, ссылающийся на SHARD_MAP_MANAGER, укажите имя сервера базы данных SQL, на котором размещен диспетчер карт сегментов в базе данных SQL, или базу данных SQL Server на виртуальной машине.To create an external data source to reference a SHARD_MAP_MANAGER, specify the SQL Database server name that hosts the shard map manager in SQL Database or a SQL Server database on a virtual machine.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred
WITH
  IDENTITY = '<username>',
  SECRET = '<password>' ;

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH
  ( TYPE = SHARD_MAP_MANAGER ,
    LOCATION = '<server_name>.database.windows.net' ,
    DATABASE_NAME = 'ElasticScaleStarterKit_ShardMapManagerDb' ,
    CREDENTIAL = ElasticDBQueryCred ,
    SHARD_MAP_NAME = 'CustomerIDShardMap'
  ) ;

Пошаговое руководство см. в разделе Приступая к работе с эластичными запросами для сегментирования (горизонтальное секционирование).For a step-by-step tutorial, see Getting started with elastic queries for sharding (horizontal partitioning).

Б.B. Создание внешнего источника данных RDBMSCreate an RDBMS external data source

Чтобы создать внешний источник данных для ссылки на RDBMS, указывается имя сервера базы данных SQL удаленной базы данных в базе данных SQL.To create an external data source to reference an RDBMS, specifies the SQL Database server name of the remote database in SQL Database.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

CREATE DATABASE SCOPED CREDENTIAL SQL_Credential
WITH
  IDENTITY = '<username>' ,
  SECRET = '<password>' ;

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc
WITH
  ( TYPE = RDBMS ,
    LOCATION = '<server_name>.database.windows.net' ,
    DATABASE_NAME = 'Customers' ,
    CREDENTIAL = SQL_Credential
  ) ;

Пошаговое руководство по RDBMS см. в разделе Начало работы с запросами между базами данных (вертикальное секционирование).For a step-by-step tutorial on RDBMS, see Getting started with cross-database queries (vertical partitioning).

Примеры: массовые операцииExamples: Bulk Operations

Важно!

Не следует добавлять / , имя файла или параметры подписи общего доступа в конце URL-адреса LOCATION при настройке внешнего источника данных для массовых операций.Do not add a trailing /, file name, or shared access signature parameters at the end of the LOCATION URL when configuring an external data source for bulk operations.

В.C. Создание внешнего источника данных для массовых операций, извлекающих данные из хранилища BLOB-объектов AzureCreate an external data source for bulk operations retrieving data from Azure Blob storage

Используйте следующий источник данных для массовых операций, выполняемых с использованием инструкций BULK INSERT или OPENROWSET.Use the following data source for bulk operations using BULK INSERT or OPENROWSET. Используемые учетные данные должны задавать SHARED ACCESS SIGNATURE в качестве идентификатора, не должны иметь ? в начале маркера SAS, должны иметь по крайней мере разрешение на чтение загружаемого файла (например, srt=o&sp=r), и иметь допустимый срок действия (все даты должны быть указаны в формате UTC).The credential must set SHARED ACCESS SIGNATURE as the identity, mustn't have the leading ? in the SAS token, must have at least read permission on the file that should be loaded (for example srt=o&sp=r), and the expiration period should be valid (all dates are in UTC time). Дополнительные сведения о подписанных URL-адресах см. в статье Использование подписанных URL-адресов.For more information on shared access signatures, see Using Shared Access Signatures (SAS).

CREATE DATABASE SCOPED CREDENTIAL AccessAzureInvoices
WITH
  IDENTITY = 'SHARED ACCESS SIGNATURE',
  -- Remove ? from the beginning of the SAS token
  SECRET = '******srt=sco&sp=rwac&se=2017-02-01T00:55:34Z&st=2016-12-29T16:55:34Z***************' ;

CREATE EXTERNAL DATA SOURCE MyAzureInvoices
WITH
  ( LOCATION = 'https://newinvoices.blob.core.windows.net/week3' ,
    CREDENTIAL = AccessAzureInvoices ,
    TYPE = BLOB_STORAGE
  ) ;

Реализация этого примера доступна в разделе BULK INSERT.To see this example in use, see BULK INSERT.

См. также:See Also

SQL ServerSQL Server База данных SQLSQL Database * Azure Synapse
Analytics *
 
* Azure Synapse
Analytics *
 
Analytics Platform
System (PDW)
Analytics Platform
System (PDW)

 

Общие сведения. Azure Synapse AnalyticsOverview: Azure Synapse Analytics

Создает внешний источник данных для PolyBase.Creates an external data source for PolyBase. Внешние источники данных используются для обеспечения взаимодействия и поддерживают следующие основные варианты использования. Виртуализация и загрузка данных с помощью PolyBaseExternal data sources are used to establish connectivity and support the following primary use case: Data virtualization and data load using PolyBase

Важно!

Чтобы создать внешний источник данных для запроса ресурса SQL Analytics через базу данных SQL Azure с помощью эластичных запросов, см. раздел База данных SQL.To create an external data source to query a SQL Analytics resource using Azure SQL Database with elastic query, see SQL Database.

СинтаксисSyntax

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = HADOOP ]
[ ; ]

АргументыArguments

data_source_namedata_source_name

Задает определенное пользователем имя для источника данных.Specifies the user-defined name for the data source. Имя должно быть уникальным в пределах База данных SQL AzureAzure SQL Database в Хранилище данных SQLSQL Data Warehouse.The name must be unique within the База данных SQL AzureAzure SQL Database in Хранилище данных SQLSQL Data Warehouse.

LOCATION = '<prefix>://<path[:port]>'LOCATION = '<prefix>://<path[:port]>'

Предоставляет протокол и путь подключения к внешнему источнику данных.Provides the connectivity protocol and path to the external data source.

Внешний источник данныхExternal Data Source Префикс расположенияLocation prefix Путь к расположениюLocation path
хранилище BLOB-объектов AzureAzure Blob Storage wasb[s] <container>@<storage_account>.blob.core.windows.net
Azure Data Lake Store Gen 1Azure Data Lake Store Gen 1 adl <storage_account>.azuredatalake.net
Azure Data Lake Store Gen 2Azure Data Lake Store Gen 2 abfs[s] <container>@<storage_account>.dfs.core.windows.net

Путь к расположению:Location path:

  • <container>: контейнер учетной записи хранения, содержащей данные.<container> = the container of the storage account holding the data. Корневые контейнеры доступны только для чтения, записать данные в контейнер невозможно.Root containers are read-only, data can't be written back to the container.
  • <storage_account>: имя учетной записи хранения Azure.<storage_account> = the storage account name of the azure resource.

Дополнительные примечания и инструкции при задании расположения:Additional notes and guidance when setting the location:

  • По умолчанию при подготовке Azure Data Lake Storage 2-го поколения используется enable secure SSL connections.The default option is to use enable secure SSL connections when provisioning Azure Data Lake Storage Gen 2. Если выбрано защищенное SSL-подключение, необходимо использовать abfss.When this is enabled, you must use abfss when a secure SSL connection is selected. Имейте в виду, что abfss также подходит для незащищенных SSL-подключений.Note abfssworks for unsecure SSL connections as well.
  • Azure Synapse не проверяет существование внешнего источника данных, когда создает объект.Azure Synapse doesn't verify the existence of the external data source when the object is created. .. Для проверки при создании внешней таблицы используйте внешний источник данных.To validate, create an external table using the external data source.
  • Используйте один и тот же внешний источник данных для всех таблиц при запросе Hadoop, чтобы обеспечить согласованность семантики запросов.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • wasb — протокол по умолчанию для хранилища больших двоичных объектов Azure.wasb is the default protocol for Azure blob storage. wasbs является необязательным, но рекомендуется, так как тогда данные будут передаваться по защищенному каналу SSL.wasbs is optional but recommended as data will be sent using a secure SSL connection.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Задает учетные данные уровня базы данных для аутентификации во внешнем источнике данных.Specifies a database-scoped credential for authenticating to the external data source.

Дополнительные примечания и инструкции при задании учетных данных:Additional notes and guidance when creating a credential:

  • Чтобы загрузить данные из хранилища BLOB-объектов Azure или Azure Data Lake Store (ADLS) Gen 2 в хранилище данных SQL, используйте ключ хранилища Azure.To load data from Azure Blob Storage or Azure Data Lake Store (ADLS) Gen 2 into SQL DW, use an Azure Storage Key.
  • CREDENTIAL требуется, только если большой двоичный объект был защищен.CREDENTIAL is only required if the blob has been secured. CREDENTIAL не является обязательным для наборов данных с возможностью анонимного доступа.CREDENTIAL isn't required for data sets that allow anonymous access.

Сведения о создании учетных данных уровня базы данных см. в разделе CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).To create a database scoped credential, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

TYPE = HADOOPTYPE = HADOOP

Указывает тип настраиваемого внешнего источника данных.Specifies the type of the external data source being configured. Этот параметр требуется не всегда.This parameter isn't always required.

  • Используйте HADOOP, если внешний источник данных — хранилище BLOB-объектов Azure, ADLS Gen 1 или ADLS Gen 2.Use HADOOP when the external data source is Azure Blob Storage, ADLS Gen 1, or ADLS Gen 2.

Важно!

Не устанавливайте TYPE при использовании любого другого источника внешних данных.Do not set TYPE if using any other external data source.

Пример использования TYPE = HADOOP для загрузки данных из хранилища BLOB-объектов Azure см. в разделе Создание внешнего источника данных для ссылки на хранилище больших двоичных объектов.For an example of using TYPE = HADOOP to load data from Azure Blob Storage, see Create external data source to reference Azure blob storage.

РазрешенияPermissions

Необходимо разрешение CONTROL на базу данных.Requires CONTROL permission on the database.

БлокировкаLocking

Принимает совмещаемую блокировку для объекта EXTERNAL DATA SOURCE.Takes a shared lock on the EXTERNAL DATA SOURCE object.

БезопасностьSecurity

PolyBase поддерживает проверку подлинности на основе прокси-сервера для большинства внешних источников данных.PolyBase supports proxy based authentication for most external data sources. Создайте учетные данные уровня базы данных для создания учетной записи-посредника.Create a database scoped credential to create the proxy account.

При подключении к хранилищу или пулу данных в кластере больших данных SQL Server учетные данные пользователя передаются через серверную систему.When you connect to the storage or data pool in a SQL Server big data cluster, the user's credentials are passed through to the back-end system. Создайте имена входа в пуле данных, чтобы включить сквозную проверку подлинности.Create logins in the data pool itself to enable pass through authentication.

Сейчас маркер SAS с типом HADOOP не поддерживается.Currently a SAS token with type HADOOP is unsupported. Он поддерживается только с ключом доступа учетной записи хранения.It's only supported with a storage account access key. Попытка создать внешний источник данных с типом HADOOP и использованием учетных данных SAS может завершиться сбоем со следующим сообщением об ошибке:Attempting to create an external data source with type HADOOP and a SAS credential fails with the following error:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Примеры:Examples:

A.A. Создание внешнего источника данных для ссылки на хранилище BLOB-объектов AzureCreate external data source to reference Azure blob storage

В этом примере внешний источник данных представляет собой контейнер хранилища BLOB-объектов Azure под названием daily в учетной записи хранения Azure с именем logs.In this example, the external data source is an Azure blob storage container called daily under Azure storage account named logs. Внешний источник данных хранилища Azure предназначен исключительно для передачи данных,The Azure storage external data source is for data transfer only. отправка предиката не поддерживается.It doesn't support predicate push-down.

В этом примере показано, как создать учетные данные с областью действия "база данных" для аутентификации в хранилище Azure.This example shows how to create the database scoped credential for authentication to Azure storage. Укажите ключ учетной записи хранения Azure в секрете учетных данных базы данных.Specify the Azure storage account key in the database credential secret. Укажите любую строку в удостоверении учетных данных с областью действия "база данных"; для проверки подлинности в хранилище Azure эти данные не используются.You can specify any string in database scoped credential identity as it isn't used during authentication to Azure storage.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
  IDENTITY = '<my_account>',
  SECRET = '<azure_storage_account_key>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH
  ( LOCATION = 'wasbs://daily@logs.blob.core.windows.net/' ,
    CREDENTIAL = AzureStorageCredential ,
    TYPE = BLOB_STORAGE
  ) ;

Б.B. Создание внешнего источника данных для ссылки на Azure Data Lake Store 1-го или 2-го поколения с использованием субъекта-службыCreate external data source to reference Azure Data Lake Store Gen 1 or 2 using a service principal

Для подключения Azure Data Lake Store могут использоваться универсальный код ресурса (URI) ADLS и субъект-служба приложения в Azure Active Directory.Azure Data lake Store connectivity can be based on your ADLS URI and your Azure Active directory Application's service principal. Документация по созданию этого приложения доступна в разделе [Аутентификация хранилища озера данных с помощью Active Directory][azure_ad[].Documentation for creating this application can be found at [Data lake store authentication using Active Directory][azure_ad[].

-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

-- These values come from your Azure Active Directory Application used to authenticate to ADLS
CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
  -- IDENTITY = '<clientID>@<OAuth2.0TokenEndPoint>' ,
  IDENTITY = '536540b4-4239-45fe-b9a3-629f97591c0c@https://login.microsoftonline.com/42f988bf-85f1-41af-91ab-2d2cd011da47/oauth2/token' ,
  -- SECRET = '<KEY>'
  SECRET = 'BjdIlmtKp4Fpyh9hIvr8HJlUida/seM5kQ3EpLAmeDI=' 
;

-- For Gen 1 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 1 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH
  ( LOCATION = 'adl://newyorktaxidataset.azuredatalakestore.net' ,
    CREDENTIAL = ADLS_credential ,
    TYPE = HADOOP
  ) ;

-- For Gen 2 - Create an external data source
-- TYPE: HADOOP - PolyBase uses Hadoop APIs to access data in Azure Data Lake Storage.
-- LOCATION: Provide Data Lake Storage Gen 2 account name and URI
-- CREDENTIAL: Provide the credential created in the previous step
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH
  -- Please note the abfss endpoint when your account has secure transfer enabled
  ( LOCATION = 'abfss://newyorktaxidataset.azuredatalakestore.net' , 
    CREDENTIAL = ADLS_credential ,
    TYPE = HADOOP
  ) ;

В.C. Создание внешнего источника данных для ссылки на Azure Data Lake Store 2-го поколения с использованием ключа учетной записи храненияCreate external data source to reference Azure Data Lake Store Gen 2 using the storage account key

-- If you do not have a Master Key on your DW you will need to create one.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

CREATE DATABASE SCOPED CREDENTIAL ADLS_credential
WITH
-- IDENTITY = '<storage_account_name>' ,
  IDENTITY = 'newyorktaxidata' ,
-- SECRET = '<storage_account_key>'
  SECRET = 'yz5N4+bxSb89McdiysJAzo+9hgEHcJRJuXbF/uC3mhbezES/oe00vXnZEl14U0lN3vxrFKsphKov16C0w6aiTQ=='
;

-- Note this example uses a Gen 2 secured endpoint (abfss)
CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( LOCATION = 'abfss://2013@newyorktaxidataset.dfs.core.windows.net' ,
    CREDENTIAL = ADLS_credential ,
    TYPE = HADOOP
  ) ;

Г.D. Создание внешнего источника данных для ссылки на подключение Polybase к хранилищу Azure Data Lake Store 2-го поколенияCreate external data source to reference Polybase connectivity to Azure Data Lake Store Gen 2

При подключении к учетной записи Azure Data Lake Store 2-го поколения с использованием управляемого удостоверения указывать секрет не нужно.There is no need to specify SECRET when connecting to Azure Data Lake Store Gen2 account with Managed Identity mechanism.

-- If you do not have a Master Key on your DW you will need to create one
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>' ;

--Create database scoped credential with **IDENTITY = 'Managed Service Identity'**

CREATE DATABASE SCOPED CREDENTIAL msi_cred 
WITH IDENTITY = 'Managed Service Identity' ;

--Create external data source with abfss:// scheme for connecting to your Azure Data Lake Store Gen2 account

CREATE EXTERNAL DATA SOURCE ext_datasource_with_abfss 
WITH 
  ( TYPE = HADOOP , 
    LOCATION = 'abfss://myfile@mystorageaccount.dfs.core.windows.net' , 
    CREDENTIAL = msi_cred
  ) ;

См. также:See Also

SQL ServerSQL Server База данных SQLSQL Database Azure Synapse
Analytics
Azure Synapse
Analytics
* Analytics
Platform System (PDW) *
 
* Analytics
Platform System (PDW) *
 

 

Общие сведения. Система платформы аналитикиOverview: Analytics Platform System

Создает внешний источник данных для запросов PolyBase.Creates an external data source for PolyBase queries. Внешние источники данных используются для обеспечения взаимодействия и поддерживают следующие варианты использования. Виртуализация и загрузка данных с помощью PolyBaseExternal data sources are used to establish connectivity and support the following use case: Data virtualization and data load using PolyBase

СинтаксисSyntax

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
  ( [ LOCATION = '<prefix>://<path>[:<port>]' ]
    [ [ , ] CREDENTIAL = <credential_name> ]
    [ [ , ] TYPE = HADOOP ]
    [ [ , ] RESOURCE_MANAGER_LOCATION = '<resource_manager>[:<port>]' )
[ ; ]

АргументыArguments

data_source_namedata_source_name

Задает определенное пользователем имя для источника данных.Specifies the user-defined name for the data source. Имя должно быть уникальным в пределах сервера в Параллельное хранилище данныхParallel Data Warehouse.The name must be unique within the server in Параллельное хранилище данныхParallel Data Warehouse.

LOCATION = '<prefix>://<path[:port]>'LOCATION = '<prefix>://<path[:port]>'

Предоставляет протокол и путь подключения к внешнему источнику данных.Provides the connectivity protocol and path to the external data source.

Внешний источник данныхExternal Data Source Префикс расположенияLocation prefix Путь к расположениюLocation path
Cloudera или HortonworksCloudera or Hortonworks hdfs <Namenode>[:port]
хранилище BLOB-объектов AzureAzure Blob Storage wasb[s] <container>@<storage_account>.blob.core.windows.net

Путь к расположению:Location path:

  • <Namenode> — имя компьютера, URI службы имен или IP-адрес Namenode в кластере Hadoop.<Namenode> = the machine name, name service URI, or IP address of the Namenode in the Hadoop cluster. PolyBase необходимо разрешить любые DNS-имена, используемые в кластере Hadoop.PolyBase must resolve any DNS names used by the Hadoop cluster.
  • port: порт, который прослушивает внешний источник данных.port = The port that the external data source is listening on. В Hadoop порт можно найти, используя параметр конфигурации fs.defaultFS.In Hadoop, the port can be found using the fs.defaultFS configuration parameter. Значение по умолчанию — 8020.The default is 8020.
  • <container>: контейнер учетной записи хранения, содержащей данные.<container> = the container of the storage account holding the data. Корневые контейнеры доступны только для чтения, записать данные в контейнер невозможно.Root containers are read-only, data can't be written back to the container.
  • <storage_account>: имя учетной записи хранения Azure.<storage_account> = the storage account name of the azure resource.

Дополнительные примечания и инструкции при задании расположения:Additional notes and guidance when setting the location:

  • Ядро PDW не проверяет существование внешнего источника данных, когда создает объект.The PDW engine doesn't verify the existence of the external data source when the object is created. Для проверки при создании внешней таблицы используйте внешний источник данных.To validate, create an external table using the external data source.
  • Используйте один и тот же внешний источник данных для всех таблиц при запросе Hadoop, чтобы обеспечить согласованность семантики запросов.Use the same external data source for all tables when querying Hadoop to ensure consistent querying semantics.
  • wasb — протокол по умолчанию для хранилища больших двоичных объектов Azure.wasb is the default protocol for Azure blob storage. wasbs является необязательным, но рекомендуется, так как тогда данные будут передаваться по защищенному каналу SSL.wasbs is optional but recommended as data will be sent using a secure SSL connection.
  • Чтобы обеспечить успешное выполнение запросов PolyBase в случае отработки отказа Hadoop Namenode, целесообразно использовать для Namenode кластера Hadoop виртуальный IP-адрес.To ensure successful PolyBase queries during a Hadoop Namenode fail-over, consider using a virtual IP address for the Namenode of the Hadoop cluster. Если этого не сделать, следует выполнить команду ALTER EXTERNAL DATA SOURCE, чтобы указать новое расположение.If you don't, execute an ALTER EXTERNAL DATA SOURCE command to point to the new location.

CREDENTIAL = credential_nameCREDENTIAL = credential_name

Задает учетные данные уровня базы данных для аутентификации во внешнем источнике данных.Specifies a database-scoped credential for authenticating to the external data source.

Дополнительные примечания и инструкции при задании учетных данных:Additional notes and guidance when creating a credential:

  • Чтобы загрузить данные из хранилища BLOB-объектов Azure или Azure Data Lake Store (ADLS) Gen 2 в хранилище данных SQL или PDW, используйте ключ хранилища Azure.To load data from either Azure Blob storage or Azure Data Lake Store (ADLS) Gen 2 into SQL DW or PDW, use an Azure Storage Key.
  • CREDENTIAL требуется, только если большой двоичный объект был защищен.CREDENTIAL is only required if the blob has been secured. CREDENTIAL не является обязательным для наборов данных с возможностью анонимного доступа.CREDENTIAL isn't required for data sets that allow anonymous access.

TYPE = [ HADOOP ]TYPE = [ HADOOP ]

Указывает тип настраиваемого внешнего источника данных.Specifies the type of the external data source being configured. Этот параметр требуется не всегда.This parameter isn't always required.

  • Используйте HADOOP, если внешний источник данных — Cloudera, Hortonworks или хранилище BLOB-объектов Azure.Use HADOOP when the external data source is Cloudera, Hortonworks, or Azure Blob Storage.

Важно!

Не устанавливайте TYPE при использовании любого другого источника внешних данных.Do not set TYPE if using any other external data source.

Пример использования TYPE = HADOOP для загрузки данных из хранилища BLOB-объектов Azure см. в разделе Создание внешнего источника данных для ссылки на хранилище больших двоичных объектов.For an example of using TYPE = HADOOP to load data from Azure Blob Storage, see Create external data source to reference Azure blob storage.

RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:порт]'RESOURCE_MANAGER_LOCATION = 'ResourceManager_URI[:port]'

Настройте это необязательное значение при подключении к Hortonworks или Cloudera.Configure this optional value when connecting to Hortonworks or Cloudera.

Если RESOURCE_MANAGER_LOCATION определен, оптимизатор запросов будет принимать решение на основе затрат для повышения производительности.When the RESOURCE_MANAGER_LOCATION is defined, the query optimizer will make a cost-based decision to improve performance. Задание MapReduce можно использовать, чтобы передать вычисления в Hadoop.A MapReduce job can be used to push down the computation to Hadoop. Указание RESOURCE_MANAGER_LOCATION может значительно сократить объем данных, передаваемых между Hadoop и SQL, повышая производительность запросов.Specifying the RESOURCE_MANAGER_LOCATION can significantly reduce the volume of data transferred between Hadoop and SQL, which can lead to improved query performance.

Если значение для Resource Manager не задано, отправка вычислений в Hadoop для запросов PolyBase отключена.If the Resource Manager isn't specified, pushing compute to Hadoop is disabled for PolyBase queries.

Если порт не задан, значение по умолчанию определяется с использованием текущей настройки для конфигурации подключения к Hadoop (hadoop connectivity).If the port isn't specified, the default value is chosen using the current setting for 'hadoop connectivity' configuration.

Подключение к HadoopHadoop Connectivity Порт по умолчанию диспетчера ресурсовDefault Resource Manager Port
11 5030050300
22 5030050300
33 80218021
44 80328032
55 80508050
66 80328032
77 80508050

Полный список поддерживаемых версий Hadoop см. в разделе Конфигурация подключений PolyBase (Transact-SQL).For a complete list of supported Hadoop versions, see PolyBase Connectivity Configuration (Transact-SQL).

Важно!

Значение RESOURCE_MANAGER_LOCATION не проверяется при создании внешнего источника данных.The RESOURCE_MANAGER_LOCATION value is not validated when you create the external data source. Указание неверного значения может вызвать сбой запроса во время выполнения каждый раз, когда выполняется попытка принудительной передачи, так как переданное значение невозможно разрешить.Entering an incorrect value may cause query failure at execution time whenever push-down is attempted as the provided value would not be able to resolve.

См. конкретный пример и дальнейшие рекомендации в разделе Создание внешнего источника данных для ссылки на Hadoop с поддержкой передачи.Create external data source to reference Hadoop with push-down enabled provides a concrete example and further guidance.

РазрешенияPermissions

Требуется разрешение CONTROL для базы данных в Параллельное хранилище данныхParallel Data Warehouse.Requires CONTROL permission on database in Параллельное хранилище данныхParallel Data Warehouse.

Примечание

В предыдущих выпусках PDW для создания внешнего источника данных требовались разрешения ALTER ANY EXTERNAL DATA SOURCE.In previous releases of PDW, create external data source required ALTER ANY EXTERNAL DATA SOURCE permissions.

БлокировкаLocking

Принимает совмещаемую блокировку для объекта EXTERNAL DATA SOURCE.Takes a shared lock on the EXTERNAL DATA SOURCE object.

БезопасностьSecurity

PolyBase поддерживает проверку подлинности на основе прокси-сервера для большинства внешних источников данных.PolyBase supports proxy based authentication for most external data sources. Создайте учетные данные уровня базы данных для создания учетной записи-посредника.Create a database scoped credential to create the proxy account.

Сейчас маркер SAS с типом HADOOP не поддерживается.Currently a SAS token with type HADOOP is unsupported. Он поддерживается только с ключом доступа учетной записи хранения.It's only supported with a storage account access key. Попытка создать внешний источник данных с типом HADOOP и использованием учетных данных SAS может завершиться сбоем со следующим сообщением об ошибке:Attempting to create an external data source with type HADOOP and a SAS credential fails with the following error:

Msg 105019, Level 16, State 1 - EXTERNAL TABLE access failed due to internal error: 'Java exception raised on call to HdfsBridge_Connect. Java exception message: Parameters provided to connect to the Azure storage account are not valid.: Error [Parameters provided to connect to the Azure storage account are not valid.] occurred while accessing external file.'

Примеры:Examples:

A.A. Создание внешнего источника данных для ссылки на HadoopCreate external data source to reference Hadoop

Чтобы создать внешний источник данных для ссылки на кластер Hadoop Hortonworks или Cloudera Hadoop, укажите имя компьютера или IP-адрес Namenode и порта Hadoop.To create an external data source to reference your Hortonworks or Cloudera Hadoop cluster, specify the machine name, or IP address of the Hadoop Namenode and port.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    TYPE = HADOOP
  ) ;

Б.B. Создание внешнего источника данных для ссылки на Hadoop с включенной отправкойCreate external data source to reference Hadoop with push-down enabled

Укажите параметр RESOURCE_MANAGER_LOCATION, чтобы включить принудительную передачу вычислений в Hadoop для запросов PolyBase.Specify the RESOURCE_MANAGER_LOCATION option to enable push-down computation to Hadoop for PolyBase queries. После включения PolyBase принимает решение на основе затрат для определения того, должны ли вычисления запроса быть переданы в Hadoop.Once enabled, PolyBase makes a cost-based decision to determine whether the query computation should be pushed to Hadoop.

CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8020'
    TYPE = HADOOP
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
) ;

В.C. Создание внешнего источника данных для ссылки на Hadoop с защитой KerberosCreate external data source to reference Kerberos-secured Hadoop

Чтобы проверить, защищен ли кластер Hadoop протоколом Kerberos, проверьте значение свойства hadoop.security.authentication в файле Hadoop core-site.xml.To verify if the Hadoop cluster is Kerberos-secured, check the value of hadoop.security.authentication property in Hadoop core-site.xml. Чтобы сослаться на кластер Hadoop с защитой Kerberos, необходимо указать учетные данные с областью действия "база данных", которые содержат ваше имя пользователя и пароль Kerberos.To reference a Kerberos-secured Hadoop cluster, you must specify a database scoped credential that contains your Kerberos username and password. Главный ключ базы данных используется для шифрования секрета учетных данных с областью действия "база данных".The database master key is used to encrypt the database scoped credential secret.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Kerberos user name and password.
CREATE DATABASE SCOPED CREDENTIAL HadoopUser1
WITH
  IDENTITY = '<hadoop_user_name>' ,
  SECRET = '<hadoop_password>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyHadoopCluster
WITH
  ( LOCATION = 'hdfs://10.10.10.10:8050' ,
    CREDENTIAL = HadoopUser1 ,
    TYPE = HADOOP ,
    RESOURCE_MANAGER_LOCATION = '10.10.10.10:8050'
  ) ;

Г.D. Создание внешнего источника данных для ссылки на хранилище BLOB-объектов AzureCreate external data source to reference Azure blob storage

В этом примере внешний источник данных представляет собой контейнер хранилища BLOB-объектов Azure под названием daily в учетной записи хранения Azure с именем logs.In this example, the external data source is an Azure blob storage container called daily under Azure storage account named logs. Внешний источник данных хранилища Azure предназначен исключительно для передачи данных,The Azure storage external data source is for data transfer only. отправка предиката не поддерживается.It doesn't support predicate push-down.

В этом примере показано, как создать учетные данные с областью действия "база данных" для аутентификации в хранилище Azure.This example shows how to create the database scoped credential for authentication to Azure storage. Укажите ключ учетной записи хранения Azure в секрете учетных данных базы данных.Specify the Azure storage account key in the database credential secret. Укажите любую строку в удостоверении учетных данных с областью действия "база данных"; для проверки подлинности в хранилище Azure эти данные не используются.You can specify any string in database scoped credential identity as it isn't used during authentication to Azure storage.

-- Create a database master key if one does not already exist, using your own password. This key is used to encrypt the credential secret in next step.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'S0me!nfo' ;

-- Create a database scoped credential with Azure storage account key as the secret.
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
  IDENTITY = '<my_account>' ,
  SECRET = '<azure_storage_account_key>' ;

-- Create an external data source with CREDENTIAL option.
CREATE EXTERNAL DATA SOURCE MyAzureStorage
WITH
  ( LOCATION = 'wasbs://daily@logs.blob.core.windows.net/'
    CREDENTIAL = AzureStorageCredential
    TYPE = BLOB_STORAGE
  ) ;

См. также:See Also