CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse適用対象:Applies to: はいSQL ServerSQL Server (サポートされているすべてのバージョン) yesSQL ServerSQL Server (all supported versions) はいAzure SQL データベースAzure SQL DatabaseYesAzure SQL データベースAzure SQL Database はいAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance はいAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics はいParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

データベースの資格情報を作成します。Creates a database credential. データベースの資格情報は、サーバー ログインまたはデータベース ユーザーにマップされません。A database credential is not mapped to a server login or database user. アクセスを必要とする操作がデータベースで実行されている場合はいつも、データベースでは資格情報を使用して外部の場所へのアクセスが行われます。The credential is used by the database to access to the external location anytime the database is performing an operation that requires access.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

CREATE DATABASE SCOPED CREDENTIAL credential_name
WITH IDENTITY = 'identity_name'
    [ , SECRET = 'secret' ]

注意

SQL Server 2014 以前の Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

引数Arguments

credential_name 作成するデータベース スコープの資格情報の名前を指定します。credential_name Specifies the name of the database scoped credential being created. credential_name はシャープ (#) 記号で始めることはできません。credential_name cannot start with the number (#) sign. システム資格情報は ## で始まります。System credentials start with ##.

IDENTITY =' identity_name ' サーバーの外部に接続するときに使用するアカウントの名前を指定します。IDENTITY ='identity_name' Specifies the name of the account to be used when connecting outside the server. 共有キーを使用して Azure Blob Storage からファイルをインポートするには、ID 名が SHARED ACCESS SIGNATURE である必要があります。To import a file from Azure Blob storage using a shared key, the identity name must be SHARED ACCESS SIGNATURE. データを Azure Synapse Analytics に読み込むには、任意の有効な値を ID に使用できます。To load data into Azure Synapse Analytics, any valid value can be used for identity. Shared Access Signature の詳細については、「Shared Access Signatures (SAS) の使用」をご覧ください。For more information about shared access signatures, see Using Shared Access Signatures (SAS). Kerberos (Windows Active Directory または MIT KDC) の使用時、IDENTITY 引数でドメイン名を使用しないでください。When using Kerberos (Windows Active Directory or MIT KDC) do not use the domain name in the IDENTITY arguement. アカウント名にしておけば問題ありません。It should just be the account name.

重要

Kerberos 認証をサポートする PolyBase 外部データ ソースは Hadoop だけです。The only PolyBase external data source that supports Kerberos authentication is Hadoop. 他のすべての外部データ ソース (SQL Server、Oracle、Teradata、MongoDB、汎用 ODBC) は、基本認証のみをサポートします。All other external data sources (SQL Server, Oracle, Teradata, MongoDB, generic ODBC) only support Basic Authentication.

注意

Azure Blob Storage 内のコンテナーで匿名アクセスが有効になっている場合は、WITH IDENTITY を使用する必要はありません。WITH IDENTITY is not required if the container in Azure Blob storage is enabled for anonymous access. Azure Blob Storage に対するクエリの例については、「Azure Blob Storage に格納されているファイルからテーブルへのインポート」を参照してください。For an example querying Azure Blob storage, see Importing into a table from a file stored on Azure Blob storage.

SECRET =' secret ' 送信の認証に必要なシークレットを指定します。SECRET ='secret' Specifies the secret required for outgoing authentication. SECRET は、Azure Blob Storage からファイルをインポートするために必要です。SECRET is required to import a file from Azure Blob storage. Azure Blob Storage から Azure Synapse Analytics または Parallel Data Warehouse に読み込むには、シークレットが Azure Storage キーである必要があります。To load from Azure Blob storage into Azure Synapse Analytics or Parallel Data Warehouse, the Secret must be the Azure Storage Key.

警告

SAS キーの値は '?' (疑問符) で始まる可能性があります。The SAS key value might begin with a '?' (question mark). SAS キーを使用する場合は、先頭の '?' を削除する必要があります。When you use the SAS key, you must remove the leading '?'. そうしないと、作業がブロックされる可能性があります。Otherwise your efforts might be blocked.

解説Remarks

データベース スコープ資格情報は、SQL ServerSQL Server 外部のリソースへの接続に必要な認証情報を含むレコードです。A database scoped credential is a record that contains the authentication information that is required to connect to a resource outside SQL ServerSQL Server. 通常、資格情報には Windows ユーザーとパスワードが含まれます。Most credentials include a Windows user and password.

データベース スコープ資格情報を作成する前に、データベースに資格情報を保護するためのマスター キーが必要です。Before creating a database scoped credential, the database must have a master key to protect the credential. 詳細については、CREATE MASTER KEY (Transact-SQL)を参照してください。For more information, see CREATE MASTER KEY (Transact-SQL).

IDENTITY が Windows ユーザーの場合、このシークレットはパスワードにすることができます。When IDENTITY is a Windows user, the secret can be the password. シークレットはサービス マスター キーを使用して暗号化されます。The secret is encrypted using the service master key. サービス マスター キーが再生成された場合、シークレットは新しいサービス マスター キーを使用して再度暗号化されます。If the service master key is regenerated, the secret is re-encrypted using the new service master key.

データベース スコープの資格情報に関する情報は、sys.database_scoped_credentials カタログ ビューで確認できます。Information about database scoped credentials is visible in the sys.database_scoped_credentials catalog view.

ここでは、データベース スコープ資格情報のアプリケーションをいくつか示します。Here are some applications of database scoped credentials:

  • SQL ServerSQL Server は、PolyBase によるパブリック以外の Azure Blob Storage または Kerberos でセキュリティ保護された Hadoop クラスターへのアクセスにデータベース スコープ資格情報を使用します。uses a database scoped credential to access non-public Azure blob storage or Kerberos-secured Hadoop clusters with PolyBase. 詳しくは、「CREATE EXTERNAL DATA SOURCE (Transact-SQL)」をご覧ください。To learn more, see CREATE EXTERNAL DATA SOURCE (Transact-SQL).

  • Azure Synapse AnalyticsAzure Synapse Analytics は、PolyBase によるパブリック以外の Azure Blob Storage へのアクセスにデータベース スコープ資格情報を使用します。uses a database scoped credential to access non-public Azure blob storage with PolyBase. 詳しくは、「CREATE EXTERNAL DATA SOURCE (Transact-SQL)」をご覧ください。To learn more, see CREATE EXTERNAL DATA SOURCE (Transact-SQL).

  • SQL DatabaseSQL Database は、グローバル クエリ機能にデータベース スコープ資格情報を使用します。uses database scoped credentials for its global query feature. これは、複数のデータベース シャード間でクエリする機能です。This is the ability to query across multiple database shards.

  • SQL DatabaseSQL Database は、データベース スコープ資格情報を使用して、Azure Blob Storage に拡張イベント ファイルを書き込みます。uses database scoped credentials to write extended event files to Azure blob storage.

  • SQL DatabaseSQL Database は、エラスティック プールにデータベース スコープ資格情報を使用します。uses database scoped credentials for elastic pools. 詳しくは、エラスティック データベースでの急増の緩和に関する記事をご覧くださいFor more information, see Tame explosive growth with elastic databases

  • BULK INSERTOPENROWSET は、データベース スコープ資格情報を使用して Azure Blob Storage からデータにアクセスします。BULK INSERT and OPENROWSET use database scoped credentials to access data from Azure blob storage. 詳しくは、「Azure BLOB ストレージのデータに一括アクセスする例」をご覧ください。For more information, see Examples of Bulk Access to Data in Azure Blob Storage.

アクセス許可Permissions

データベースに対する CONTROL 権限が必要です。Requires CONTROL permission on the database.

Examples

A.A. アプリケーションのデータベース スコープ資格情報の作成Creating a database scoped credential for your application

次の例では、AppCred というデータベース スコープ資格情報を作成します。The following example creates the database scoped credential called AppCred. データベース スコープ資格情報には Windows ユーザー Mary5 とパスワードが含まれます。The database scoped credential contains the Windows user Mary5 and a password.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL AppCred WITH IDENTITY = 'Mary5',
    SECRET = '<EnterStrongPasswordHere>';

B.B. Shared Access Signature のデータベース スコープ資格情報の作成Creating a database scoped credential for a shared access signature

次の例では、BULK INSERTOPENROWSET など、一括操作できる外部データ ソースの作成に使用できるデータベース スコープ資格情報を作成します。The following example creates a database scoped credential that can be used to create an external data source, which can do bulk operations, such as BULK INSERT and OPENROWSET. Shared Access Signatures は、SQL Server、APS、または Azure Synapse Analytics では PolyBase と共に使用できません。Shared Access Signatures cannot be used with PolyBase in SQL Server, APS or Azure Synapse Analytics.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'QLYMgmSXMklt%2FI1U6DcVrQixnlU5Sgbtk1qDRakUBGs%3D';

C.C. Azure Data Lake Store に PolyBase で接続するためのデータベース スコープ資格情報の作成Creating a database scoped credential for PolyBase Connectivity to Azure Data Lake Store

次の例では、Azure Synapse AnalyticsAzure Synapse Analytics で PolyBase によって使用できる外部データ ソースの作成に使用できるデータベース スコープ資格情報を作成します。The following example creates a database scoped credential that can be used to create an external data source, which can be used by PolyBase in Azure Synapse AnalyticsAzure Synapse Analytics.

Azure Data Lake Store は、Azure Active Directory アプリケーションをサービス間認証に使用します。Azure Data Lake Store uses an Azure Active Directory Application for Service to Service Authentication. データベース スコープ資格情報を作成する前に、AAD アプリケーションを作成し、client_id、OAuth_2.0_Token_EndPoint、キーを文書化してください。Please create an AAD application and document your client_id, OAuth_2.0_Token_EndPoint, and Key before you try to create a database scoped credential.

-- Create a db master key if one does not already exist, using your own password.
CREATE MASTER KEY ENCRYPTION BY PASSWORD='<EnterStrongPasswordHere>';

-- Create a database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH
    IDENTITY = '<client_id>@\<OAuth_2.0_Token_EndPoint>',
    SECRET = '<key>'
;

詳細情報More information