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

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaVerwaltete Azure SQL-InstanzAzure SQL Managed InstanceYesVerwaltete Azure SQL-InstanzAzure SQL Managed Instance

Erstellt Anmeldeinformationen auf Serverebene.Creates a server-level credential. Anmeldeinformationen sind in einem Datensatz gespeichert, in dem die Authentifizierungsinformationen enthalten sind, die zum Herstellen einer Verbindung mit einer Ressource außerhalb von SQL Server erforderlich sind.A credential is a record that contains the authentication information that is required to connect to a resource outside SQL Server. Die meisten Anmeldeinformationen schließen einen Windows-Benutzer und ein Kennwort ein.Most credentials include a Windows user and password. Wenn Sie z.B. eine Datensicherung an einem beliebigen Speicherort speichern, erfordert SQL Server möglicherweise die Eingabe von besonderen Anmeldeinformationen, damit auf diesen Speicherort zugegriffen werden kann.For example, saving a database backup to some location might require SQL Server to provide special credentials to access that location. Weitere Informationen finden Sie unter Anmeldeinformationen (Datenbank-Engine).For more information, see Credentials (Database Engine).

Hinweis

Verwenden Sie CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL) zum Erstellen der Anmeldeinformationen auf Datenbankebene.To make the credential at the database-level use CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL). Verwenden Sie Anmeldeinformationen auf Serverebene, wenn Sie dieselben Anmeldeinformationen für mehrere Datenbanken auf demselben Server verwenden müssen.Use a server-level credential when you need to use the same credential for multiple databases on the server. Verwenden Sie datenbankbezogene Anmeldeinformationen, um die Datenbank portierbarer zu machen.Use a database-scoped credential to make the database more portable. Wenn eine Datenbank auf einen neuen Server verschoben wird, werden gleichzeitig auch diese datenbankbezogenen Anmeldeinformationen verschoben.When a database is moved to a new server, the database scoped credential will move with it. Verwenden Sie datenbankbezogene Anmeldeinformationen in SQL-DatenbankSQL Database.Use database scoped credentials on SQL-DatenbankSQL Database.

Symbol für Themenlink Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

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

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumenteArguments

credential_name Gibt den Namen für die zu erstellenden Anmeldeinformationen an.credential_name Specifies the name of the credential being created. credential_name darf nicht mit dem Nummernzeichen (#) beginnen.credential_name cannot start with the number (#) sign. Systemanmeldeinformationen beginnen mit zwei Nummernzeichen (##).System credentials start with ##.

Wichtig

Wenn eine Shared Access Signature (SAS) verwendet wird, muss dieser Name dem Containerpfad zugeordnet werden können, mit „https“ beginnen und einen Schrägstrich enthalten.When using a shared access signature (SAS), this name must match the container path, start with https and must not contain a forward slash. Siehe Beispiel D.See example D.

IDENTITY =' identity_name ' Gibt den Namen des Kontos an, das beim Herstellen einer Verbindung außerhalb des Servers verwendet wird.IDENTITY ='identity_name' Specifies the name of the account to be used when connecting outside the server. Wenn die Anmeldeinformationen zum Zugreifen auf Azure Key Vault verwendet werden, ist IDENTITY der Name des Schlüsseltresors.When the credential is used to access the Azure Key Vault, the IDENTITY is the name of the key vault. Weitere Informationen finden Sie unten im Beispiel C.See example C below. Wenn die Anmeldeinformationen eine Shared Access Signature (SAS) verwenden, lautet IDENTITY SHARED ACCESS SIGNATURE.When the credential is using a shared access signature (SAS), the IDENTITY is SHARED ACCESS SIGNATURE. Siehe Beispiel D.See example D below.

Wichtig

Azure SQL-Datenbank unterstützt nur Azure Key Vault- und Shared Access Signature-Identitäten.Azure SQL Database only supports Azure Key Vault and Shared Access Signature identities. Windows-Benutzeridentitäten werden nicht unterstützt.Windows user identities are not supported.

SECRET =' secret ' Gibt den geheimen Schlüssel an, der für die ausgehende Authentifizierung erforderlich ist.SECRET ='secret' Specifies the secret required for outgoing authentication.

Wenn die Anmeldeinformationen zum Zugreifen auf Azure Key Vault verwendet werden, müssen an das SECRET-Argument von CREATE CREDENTIAL die <Client ID> (ohne Bindestriche) und der <Secret> eines Dienstprinzipals in Azure Active Directory zusammen, ohne Leerzeichen dazwischen, übergeben werden.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. Weitere Informationen finden Sie unten im Beispiel C.See example C below. Wenn die Anmeldeinformationen eine Shared Access Signature (SAS) verwenden, ist SECRET das freigegebene SAS-Token.When the credential is using a shared access signature, the SECRET is the shared access signature token. Siehe Beispiel D.See example D below. Informationen über das Erstellen einer gespeicherten Zugriffsrichtlinie und einer Shared Access Signature (SAS) in einem Azure-Container finden Sie unter Lektion 1: Erstellen einer gespeicherten Zugriffsrichtlinie und von Speicher mit freigegebenem Zugriff.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.

OR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name Gibt den Namen eines EKM-Anbieters (Enterprise Key Management) an.FOR CRYPTOGRAPHIC PROVIDER cryptographic_provider_name Specifies the name of an Enterprise Key Management Provider (EKM). Weitere Informationen zum Verwalten von Schlüsseln finden Sie unter Erweiterbare Schlüsselverwaltung (EKM).For more information about Key Management, see Extensible Key Management (EKM).

BemerkungenRemarks

Falls für IDENTITY ein Windows-Benutzer angegeben ist, kann der geheime Bereich das Kennwort enthalten.When IDENTITY is a Windows user, the secret can be the password. Der geheime Bereich wird mithilfe des Diensthauptschlüssels verschlüsselt.The secret is encrypted using the service master key. Falls der Diensthauptschlüssel neu generiert wird, wird der geheime Bereich mithilfe des neuen Diensthauptschlüssels neu verschlüsselt.If the service master key is regenerated, the secret is re-encrypted using the new service master key.

Nach der Erstellung von Anmeldeinformationen können Sie diese einem SQL ServerSQL Server-Anmeldenamen zuordnen, indem Sie CREATE LOGIN oder ALTER LOGIN verwenden.After creating a credential, you can map it to a SQL ServerSQL Server login by using CREATE LOGIN or ALTER LOGIN. Ein SQL ServerSQL Server-Anmeldename kann nur einem Satz Anmeldeinformationen zugeordnet werden, ein Satz Anmeldeinformationen kann jedoch mehreren SQL ServerSQL Server-Anmeldenamen zugeordnet sein.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. Weitere Informationen finden Sie unter Anmeldeinformationen (Datenbank-Engine).For more information, see Credentials (Database Engine). Anmeldeinformationen auf Serverebene können nur einem Anmeldenamen und keinem Datenbankbenutzer zugeordnet werden.A server-level credential can only be mapped to a login, not to a database user.

Informationen zu Anmeldeinformationen werden in der sys.credentials-Katalogsicht angezeigt.Information about credentials is visible in the sys.credentials catalog view.

Falls für den Anbieter kein mit einem Anmeldenamen verknüpfter Identitätsnachweis vorliegt, werden die dem SQL ServerSQL Server -Dienstkonto zugeordneten Anmeldeinformationen verwendet.If there is no login mapped credential for the provider, the credential mapped to SQL ServerSQL Server service account is used.

Einem Anmeldenamen können mehrere Anmeldeinformationen zugeordnet werden, solange sie für unterschiedliche Anbieter verwendet werden.A login can have multiple credentials mapped to it as long as they are used with distinctive providers. Pro Anbieter und Anmeldung darf es jedoch nur einen zugeordneten Identitätsnachweis geben.There must be only one mapped credential per provider per login. Die gleichen Anmeldeinformationen können jedoch auch anderen Anmeldenamen zugeordnet werden.The same credential can be mapped to other logins.

BerechtigungenPermissions

Erfordert die ALTER ANY CREDENTIAL-Berechtigung.Requires ALTER ANY CREDENTIAL permission.

BeispieleExamples

A.A. Elementares BeispielBasic Example

Im folgenden Beispiel werden die Anmeldeinformationen namens AlterEgo erstellt.The following example creates the credential called AlterEgo. Die Anmeldeinformationen enthalten den Windows-Benutzer Mary5 und ein Kennwort.The credential contains the Windows user Mary5 and a password.

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

B.B. Erstellen von Anmeldeinformationen für EKMCreating a Credential for EKM

Im folgenden Beispiel wird ein zuvor erstelltes Konto namens User1OnEKM auf einem EKM-Modul mithilfe der EKM-Verwaltungstools mit einem Standardkontotyp und Kennwort verwendet.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. Das sysadmin-Konto auf dem Server erstellt die Anmeldeinformationen, mit denen die Verbindung mit dem EKM-Konto hergestellt wird, und weist diese dem User1 SQL ServerSQL Server-Konto zu: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 User1
ADD CREDENTIAL CredentialForEKM;

C.C. Erstellen von Anmeldeinformationen für EKM unter Verwendung des Azure-SchlüsseltresorsCreating a Credential for EKM Using the Azure Key Vault

Im folgenden Beispiel werden SQL ServerSQL Server-Anmeldeinformationen erstellt, die das Datenbank-EngineDatabase Engine beim Zugreifen auf Azure Key Vault mit dem SQL Server-Connector für Microsoft Azure Key Vault verwenden soll.The following example creates a SQL ServerSQL Server credential for the Datenbank-EngineDatabase Engine to use when accessing the Azure Key Vault using the SQL Server Connector for Microsoft Azure Key Vault. Ein vollständiges Beispiel zur Verwendung des SQL ServerSQL Server-Connectors finden Sie unter Erweiterbare Schlüsselverwaltung mit Azure Key Vault (SQL Server).For a complete example of using the SQL ServerSQL Server Connector, see Extensible Key Management Using Azure Key Vault (SQL Server).

Wichtig

Das IDENTITY -Argument von CREATE CREDENTIAL erfordert den Schlüsseltresornamen.The IDENTITY argument of CREATE CREDENTIAL requires the key vault name. An das SECRET-Argument von CREATE CREDENTIAL müssen die <Client ID> (ohne Bindestriche) und der <Secret> zusammen, ohne Leerzeichen dazwischen, übergeben werden.The SECRET argument of CREATE CREDENTIAL requires the <Client ID> (without hyphens) and <Secret> to be passed together without a space between them.

Im folgenden Beispiel wird die Client-ID (EF5C8E09-4D2A-4A76-9998-D93440D8115D) von den Bindestrichen bereinigt und als Zeichenfolge EF5C8E094D2A4A769998D93440D8115D eingegeben. Der geheime Schlüssel wird durch die Zeichenfolge SECRET_DBEnginedargestellt.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 ;

Im folgenden Beispiel werden die gleichen Anmeldeinformationen unter Verwendung von Variablen für die Zeichenfolgen der Client-ID und des geheimem Schlüssels erstellt, die dann verkettet werden, um das SECRET-Argument zu bilden.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. Mit der REPLACE-Funktion werden die Bindestriche aus der Client-ID entfernt.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. Erstellen von Anmeldeinformationen mithilfe eines SAS-TokenCreating a Credential using a SAS Token

Gilt für: SQL Server 2014 (12.x)SQL Server 2014 (12.x) bis zur aktuellen Version und verwaltete Instanzen in Azure SQL-Datenbank.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) through current version and managed instances in Azure SQL Database.

Das folgende Beispiel erstellt SAS-Anmeldinformationen mit dem SAS-Token.The following example creates a shared access signature credential using a SAS token. Ein Tutorial zum Erstellen einer gespeicherten Zugriffsrichtlinie und einer SAS für einen Azure-Container und das anschließende Erstellen von Anmeldeinformationen mit dieser SAS finden Sie unter Tutorial: Verwenden des Microsoft Azure BLOB-Speicherdiensts mit SQL Server 2016.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.

Wichtig

Das CREDENTIAL NAME-Argument erfordert, dass der Name dem Containerpfad zugeordnet werden kann, mit „https“ beginnt und keinen nachgestellten Schrägstrich enthält.THE CREDENTIAL NAME argument requires that the name match the container path, start with https and not contain a trailing forward slash. Das IDENTITY-Argument erfordert den Namen SHARED ACCESS SIGNATURE.The IDENTITY argument requires the name, SHARED ACCESS SIGNATURE. Das SECRET-Argument erfordert das SAS-Token.The SECRET argument requires the shared access signature token.

Das SHARED ACCESS SIGNATURE-Geheimnis sollte kein vorangehendes ? haben.The SHARED ACCESS SIGNATURE secret should not have the leading ?.

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

Weitere InformationenSee Also