CREATE CREDENTIAL (Transact-SQL)CREATE CREDENTIAL (Transact-SQL)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)noDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Crea una credenziale a livello di server.Creates a server-level credential. Una credenziale è un record contenente le informazioni di autenticazione necessarie per connettersi a una risorsa all'esterno di SQL Server.A credential is a record that contains the authentication information that is required to connect to a resource outside SQL Server. La maggior parte delle credenziali include un utente e una password di Windows.Most credentials include a Windows user and password. Salvataggio di un backup del database a una determinata posizione, ad esempio, potrebbe richiedere SQL Server per fornire le credenziali speciali per accedere al percorso.For example, saving a database backup to some location might require SQL Server to provide special credentials to access that location. Per ulteriori informazioni, vedere credenziali (motore di Database).For more information, see Credentials (Database Engine).

Nota

Per rendere le credenziali durante l'utilizzo a livello di database CREATE DATABASE SCOPED CREDENTIAL ( Transact-SQL ) .To make the credential at the database-level use CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Usare una credenziale a livello di server quando è necessario utilizzare le stesse credenziali per più database nel server.Use a server-level credential when you need to use the same credential for multiple databases on the server. Utilizzare le credenziali con ambito database per rendere portabile il database.Use a database-scoped credential to make the database more portable. Quando un database viene spostato in un nuovo server, le credenziali con ambito database verranno spostato automaticamente.When a database is moved to a new server, the database scoped credential will move with it. Database di utilizzare credenziali con ambito in Database SQLSQL Database.Use database scoped credentials on Database SQLSQL Database.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax


CREATE CREDENTIAL credential_name   
WITH IDENTITY = 'identity_name'  
    [ , SECRET = 'secret' ]  
        [ FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name ]  

ArgomentiArguments

credential_namecredential_name
Viene specificato il nome delle credenziali create.Specifies the name of the credential being created. credential_name non può iniziare con il simbolo di cancelletto (#).credential_name cannot start with the number (#) sign. perché tale simbolo viene utilizzato per le credenziali di sistema.System credentials start with ##. Quando si utilizza una firma di accesso condiviso (SAS), questo nome deve corrispondere al percorso del contenitore, iniziare con https e non deve contenere una barra rovesciata.When using a shared access signature (SAS), this name must match the container path, start with https and must not contain a forward slash. Vedere l'esempio D seguente.See example D below.

IDENTITÀ ='identity_name'IDENTITY ='identity_name'
Specifica il nome dell'account da utilizzare per la connessione all'esterno del server.Specifies the name of the account to be used when connecting outside the server. Quando la credenziale viene utilizzata per accedere a insieme di credenziali chiave di Azure, il identità è il nome dell'insieme di credenziali chiave.When the credential is used to access the Azure Key Vault, the IDENTITY is the name of the key vault. Vedere l'esempio C riportato di seguito.See example C below. Quando si utilizza una firma di accesso condiviso (SAS), le credenziali di identità è firma di accesso condiviso.When the credential is using a shared access signature (SAS), the IDENTITY is SHARED ACCESS SIGNATURE. Vedere l'esempio D seguente.See example D below.

SEGRETO ='secret'SECRET ='secret'
Specifica il segreto richiesto per l'autenticazione in uscita.Specifies the secret required for outgoing authentication.

Quando la credenziale viene utilizzata per l'insieme di credenziali chiave di Azure di accedere il SECRET argomento di CREATE CREDENTIAL richiede il <ID Client > (senza trattini) e <segreto > di un dell'entità servizio in Azure Active Directory da passare insieme senza uno spazio tra di essi.When the credential is used to access the Azure Key Vault the SECRET argument of CREATE CREDENTIAL requires the <Client ID> (without hyphens) and <Secret> of a Service Principal in the Azure Active Directory to be passed together without a space between them. Vedere l'esempio C riportato di seguito.See example C below. Quando si utilizza una firma di accesso condiviso, le credenziali di SECRET è il token di firma di accesso condiviso.When the credential is using a shared access signature, the SECRET is the shared access signature token. Vedere l'esempio D seguente.See example D below. Per informazioni sulla creazione di criteri di accesso archiviati e una firma di accesso condiviso in un contenitore di Azure, vedere lezione 1: creare criteri di accesso archiviati e una firma di accesso condiviso in un contenitore di Azure.For information about creating a stored access policy and a shared access signature on an Azure container, see Lesson 1: Create a stored access policy and a shared access signature on an Azure container.

PER PROVIDER di crittografia cryptographic_provider_nameFOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name
Specifica il nome di un chiave Gestione Provider EKM (Enterprise).Specifies the name of an Enterprise Key Management Provider (EKM). Per ulteriori informazioni sulla gestione delle chiavi, vedere Extensible Key Management ( EKM ) .For more information about Key Management, see Extensible Key Management (EKM).

OsservazioniRemarks

Se IDENTITY è un utente di Windows, il segreto può essere la password.When IDENTITY is a Windows user, the secret can be the password. Il segreto viene crittografato con la chiave master del servizio.The secret is encrypted using the service master key. Se la chiave master del servizio viene rigenerata, il segreto viene ricrittografato con la nuova chiave master del servizio.If the service master key is regenerated, the secret is re-encrypted using the new service master key.

Dopo aver creato una credenziale, è possibile eseguirne il mapping a un SQL ServerSQL Server account di accesso tramite CREATE LOGIN o ALTER LOGIN.After creating a credential, you can map it to a SQL ServerSQL Server login by using CREATE LOGIN or ALTER LOGIN. Oggetto SQL ServerSQL Server account di accesso può essere mappata a una sola credenziale, ma è possibile eseguire il mapping di una singola credenziale a più SQL ServerSQL Server gli account di accesso.A SQL ServerSQL Server login can be mapped to only one credential, but a single credential can be mapped to multiple SQL ServerSQL Server logins. Per ulteriori informazioni, vedere credenziali ( motore di Database ).For more information, see Credentials (Database Engine). Una credenziale a livello di server può essere mappata solo a un account di accesso, non a un utente del database.A server-level credential can only be mapped to a login, not to a database user.

Informazioni sulle credenziali sono visibili nella credentials vista del catalogo.Information about credentials is visible in the sys.credentials catalog view.

Se non sono presenti credenziali su cui viene eseguito il mapping a un account accesso per il provider, vengono utilizzate le credenziali sui cui viene eseguito il mapping all'account del servizio SQL ServerSQL Server .If there is no login mapped credential for the provider, the credential mapped to SQL ServerSQL Server service account is used.

A un account di accesso è possibile eseguire il mapping di più credenziali, a condizione che vengano utilizzate con provider distinti.A login can have multiple credentials mapped to it as long as they are used with distinctive providers. È possibile eseguire il mapping di una sola credenziale per provider per ogni account di accesso.There must be only one mapped credential per provider per login. Sulla stessa credenziale è possibile eseguire il mapping ad altri account di accesso.The same credential can be mapped to other logins.

PermissionsPermissions

Richiede ALTER ANY CREDENTIAL autorizzazione.Requires ALTER ANY CREDENTIAL permission.

EsempiExamples

A.A. Esempio di baseBasic Example

Nell'esempio seguente viene creata la credenziale denominata AlterEgo.The following example creates the credential called AlterEgo. Tale credenziale contiene l'utente di Windows Mary5 e una password.The credential contains the Windows user Mary5 and a password.

CREATE CREDENTIAL AlterEgo WITH IDENTITY = 'Mary5',   
    SECRET = '<EnterStrongPasswordHere>';  
GO  

B.B. Creazione di una credenziale per EKMCreating a Credential for EKM

Nell'esempio seguente viene utilizzato un account creato in precedenza denominato User1OnEKM in un modulo EKM tramite gli strumenti di gestione di EKM, con un tipo di account di base e una password.The following example uses a previously created account called User1OnEKM on an EKM module through the EKM’s Management tools, with a basic account type and password. Il sysadmin account sul server crea una credenziale che viene utilizzata per connettersi all'account EKM e assegna al User1 SQL ServerSQL Server account:The sysadmin account on the server creates a credential that is used to connect to the EKM account, and assigns it to the User1 SQL ServerSQL Server account:

CREATE CREDENTIAL CredentialForEKM  
    WITH IDENTITY='User1OnEKM', SECRET='<EnterStrongPasswordHere>'  
    FOR CRYPTOGRAPHIC PROVIDER MyEKMProvider;  
GO  

/* Modify the login to assign the cryptographic provider credential */  
ALTER LOGIN Login1  
ADD CREDENTIAL CredentialForEKM;  

/* Modify the login to assign a non cryptographic provider credential */   
ALTER LOGIN Login1  
WITH CREDENTIAL = AlterEgo;  
GO  

C.C. Creazione di una credenziale per EKM con l'insieme di credenziali chiave di AzureCreating a Credential for EKM Using the Azure Key Vault

Nell'esempio seguente viene creato un SQL ServerSQL Server le credenziali per il Motore di databaseDatabase Engine da utilizzare quando si accede utilizzando insieme credenziali chiavi Azure il SQL Server Connector per Microsoft Azure Key Vault.The following example creates a SQL ServerSQL Server credential for the Motore di databaseDatabase Engine to use when accessing the Azure Key Vault using the SQL Server Connector for Microsoft Azure Key Vault. Per un esempio completo dell'utilizzo di SQL ServerSQL Server connettore, vedere Extensible Key Management con insieme credenziali chiavi Azure ( SQL Server ) .For a complete example of using the SQL ServerSQL Server Connector, see Extensible Key Management Using Azure Key Vault (SQL Server).

Importante

L'argomento IDENTITY di CREATE CREDENTIAL richiede il nome dell'insieme di credenziali delle chiavi.The IDENTITY argument of CREATE CREDENTIAL requires the key vault name. Il SECRET argomento di CREATE CREDENTIAL richiede il <ID Client > (senza trattini) e <segreto > da passare insieme senza uno spazio tra di essi.The SECRET argument of CREATE CREDENTIAL requires the <Client ID> (without hyphens) and <Secret> to be passed together without a space between them.

Nell'esempio seguente l' ID client (EF5C8E09-4D2A-4A76-9998-D93440D8115D) viene immesso con tutti i trattini rimossi come stringa EF5C8E094D2A4A769998D93440D8115D e il Segreto è rappresentato dalla stringa SECRET_DBEngine.In the following example, the Client ID (EF5C8E09-4D2A-4A76-9998-D93440D8115D) is stripped of the hyphens and entered as the string EF5C8E094D2A4A769998D93440D8115D and the Secret is represented by the string SECRET_DBEngine.

USE master;  
CREATE CREDENTIAL Azure_EKM_TDE_cred   
    WITH IDENTITY = 'ContosoKeyVault',   
    SECRET = 'EF5C8E094D2A4A769998D93440D8115DSECRET_DBEngine'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;  

Nell'esempio seguente viene creata la stessa credenziale utilizzando le variabili per il ID Client e Secret stringhe, che vengono quindi concatenate insieme per formare il SECRET argomento.The following example creates the same credential by using variables for the Client ID and Secret strings, which are then concatenated together to form the SECRET argument. Il sostituire funzione viene utilizzata per rimuovere i trattini dall'ID Client.The REPLACE function is used to remove the hyphens from the Client ID.

DECLARE @AuthClientId uniqueidentifier = 'EF5C8E09-4D2A-4A76-9998-D93440D8115D';  
DECLARE @AuthClientSecret varchar(200) = 'SECRET_DBEngine';  
DECLARE @pwd varchar(max) = REPLACE(CONVERT(varchar(36), @AuthClientId) , '-', '') + @AuthClientSecret;  

EXEC ('CREATE CREDENTIAL Azure_EKM_TDE_cred   
    WITH IDENTITY = 'ContosoKeyVault', SECRET = ''' + @PWD + '''   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov ;');  

D.D. Creazione di una credenziale utilizzando un Token di firma di accesso condivisoCreating a Credential using a SAS Token

Si applica a: SQL Server 2014SQL Server 2014 tramite versione.Applies to: SQL Server 2014SQL Server 2014 through current version.

Nell'esempio seguente crea una credenziale di firma di accesso condiviso usando un token di firma di accesso condiviso.The following example creates a shared access signature credential using a SAS token. Per un'esercitazione sulla creazione di criteri di accesso archiviati e una firma di accesso condiviso in un contenitore di Azure e quindi creare una credenziale utilizzando la firma di accesso condiviso, vedere esercitazione: utilizzo del servizio di archiviazione Blob di Microsoft Azure con SQL Server 2016 database.For a tutorial on creating a stored access policy and a shared access signature on an Azure container, and then creating a credential using the shared access signature, see Tutorial: Using the Microsoft Azure Blob storage service with SQL Server 2016 databases.

Importante

IL nome delle CREDENZIALI argomento richiede che il nome corrisponde al percorso del contenitore, iniziare con https e non contengono una barra finale.THE CREDENTIAL NAME argument requires that the name match the container path, start with https and not contain a trailing forward slash. Il identità argomento richiede il nome, firma di accesso condiviso.The IDENTITY argument requires the name, SHARED ACCESS SIGNATURE. Il SECRET argomento richiede che il token di firma di accesso condiviso.The SECRET argument requires the shared access signature token.

USE master  
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] -- this name must match the container path, start with https and must not contain a trailing forward slash.  
   WITH IDENTITY='SHARED ACCESS SIGNATURE' -- this is a mandatory string and do not change it.   
   , SECRET = 'sharedaccesssignature' –- this is the shared access signature token   
GO    

Vedere ancheSee Also

Credenziali ( motore di Database ) Credentials (Database Engine)
Istruzione ALTER CREDENTIAL ( Transact-SQL ) ALTER CREDENTIAL (Transact-SQL)
DROP CREDENTIAL ( Transact-SQL ) DROP CREDENTIAL (Transact-SQL)
CREATE DATABASE SCOPED CREDENTIAL ( Transact-SQL ) CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
CREATE LOGIN (Transact-SQL) CREATE LOGIN (Transact-SQL)
ALTER LOGIN (Transact-SQL) ALTER LOGIN (Transact-SQL)
sys.credentials (Transact-SQL) sys.credentials (Transact-SQL)
Lezione 2: Creare una credenziale di SQL Server utilizzando una firma di accesso condiviso Lesson 2: Create a SQL Server credential using a shared access signature
Firme di accesso condivisoShared Access Signatures