CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

Si applica a:yes SQL Server (tutte le versioni supportate) database SQL di Azure Istanza gestita di SQL di Azure YesyesAzure Synapse Analytics Analytics yesPlatform System (PDW) Yes

Crea credenziali del database. Le credenziali del database non sono mappata a un account di accesso al server o a un utente di database. Le credenziali vengono usate dal database per accedere al percorso esterno ogni volta che l'operazione eseguita dal database lo richiede.

Topic link iconConvenzioni di sintassi Transact-SQL

Sintassi

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

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 e versioni precedenti, vedere Documentazione delle versioni precedenti.

Argomenti

credential_name specifica il nome della credenziale con ambito database che si vuole creare. credential_name non può iniziare con il simbolo del cancelletto (#). perché tale simbolo viene utilizzato per le credenziali di sistema.

IDENTITY ='identity_name' Specifica il nome dell'account da usare durante la connessione all'esterno del server. Per l'importazione di un file dall'archiviazione BLOB di Azure usando una chiave condivisa, il nome dell'identità deve essere SHARED ACCESS SIGNATURE. Per caricare dati in Azure Synapse Analytics è possibile usare qualsiasi valore valido per l'identità. Per altre informazioni sulle firme di accesso condiviso, vedere Uso delle firme di accesso condiviso. Quando si usa Kerberos (Windows Active Directory o MIT KDC), non usare il nome di dominio nell'argomento IDENTITY. Usare semplicemente il nome dell'account.

Importante

L'unica origine dati esterna polyBase che supporta l'autenticazione Kerberos è Hadoop. Tutte le altre origini dati esterne (SQL Server, Oracle, Teradata, MongoDB, ODBC generico) supportano solo l'autenticazione di base.

Nota

WITH IDENTITY non è obbligatoria se il contenitore dell'archiviazione BLOB di Azure è abilitato per l'accesso anonimo. Per un esempio di query nell'archiviazione BLOB di Azure, vedere Importazione in una tabella da un file archiviato in Archiviazione BLOB di Azure.

SECRET ='secret' specifica il segreto richiesto per l'autenticazione in uscita. È necessario specificare SECRET per importare un file dall'archiviazione BLOB di Azure. Per caricare dati dall'archiviazione BLOB di Azure in Azure Synapse Analytics o Parallel Data Warehouse, il segreto deve essere la chiave di Archiviazione di Azure.

Avviso

Il valore della chiave di firma di accesso condiviso può iniziare con "?" (punto interrogativo). Quando si usa la chiave di firma di accesso condiviso, è necessario rimuovere il carattere "?" iniziale, altrimenti potrebbe verificarsi un blocco.

Osservazioni

Una credenziale con ambito database è un record che contiene le informazioni di autenticazione necessarie per connettersi a una risorsa all'esterno di SQL Server. La maggior parte delle credenziali include un utente e una password di Windows.

Prima di creare credenziali con ambito database, il database deve avere una chiave master per proteggere le credenziali. Per altre informazioni, vedere CREATE MASTER KEY (Transact-SQL).

Se IDENTITY è un utente di Windows, il segreto può essere la password. Il segreto viene crittografato con la chiave master del servizio. Se la chiave master del servizio viene rigenerata, il segreto viene ricrittografato con la nuova chiave master del servizio.

Altre informazioni sulle credenziali con ambito database sono disponibili nella vista del catalogo sys.database_scoped_credentials.

Di seguito sono elencate alcune applicazioni delle credenziali con ambito database:

Autorizzazioni

È richiesta l'autorizzazione CONTROL per il database.

Esempi

R. Creazione di credenziali con ambito database per l'applicazione

Nell'esempio seguente viene creata la credenziale con ambito database denominata AppCred. La credenziale con ambito database include l'utente Windows Mary5 e una 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. Creazione di credenziali con ambito database per una firma di accesso condiviso

Nell'esempio seguente viene creata una credenziale con ambito database che può essere usata per creare un'origine dati esterna che può eseguire operazioni in blocco, come ad esempio BULK INSERT e OPENROWSET. Le firme di accesso condiviso non possono essere usate con PolyBase in SQL Server, nella piattaforma di strumenti analitici o in 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. Creazione di credenziali con ambito database per la connettività di PolyBase ad Azure Data Lake Store

Nell'esempio seguente viene creata una credenziale con ambito database che può essere usata per creare un'origine dati esterna, che può essere usata da PolyBase in Azure Synapse Analytics.

Azure Data Lake Store usa un'applicazione di Azure Active Directory per l'autenticazione Service to Service. Creare un'applicazione AAD e documentare il client_id, OAuth_2.0_Token_EndPoint e Chiave prima di provare a creare credenziali con ambito database.

-- 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>'
;

Altre informazioni