Freigeben über


DATENBANK-SCOPED CREDENTIAL ERSTELLEN (Transact-SQL)

Gilt für:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-Datenbank in Microsoft Fabric

Erstellt Datenbank-Anmeldeinformationen. Eine Datenbankzugangsdaten werden nicht einem Server-Login oder Datenbankbenutzer zugeordnet. Die Datenbank verwendet die Zugangsdaten, um auf die externe Ressource zuzugreifen, wenn sie eine Operation durchführt, die Zugriff erfordert.

Transact-SQL-Syntaxkonventionen

Syntax

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

Arguments

credential_name

Gibt den Namen für die datenbankweit gültigen Anmeldeinformationen an, die erstellt werden sollen. credential_name kann nicht mit dem Nummernzeichen (#) beginnen. Systemanmeldeinformationen beginnen mit ##. Die maximale Länge von credential_name beträgt 128 Zeichen.

IDENTITÄT = 'identity_name'

Gibt den Namen des Kontos an, das beim Verbinden außerhalb des Servers verwendet werden soll.

  • Der Identitätsname muss SHARED ACCESS SIGNATURE sein, um eine Datei aus Azure Blob Storage oder Azure Data Lake Storage mithilfe eines freigegebenen Schlüssels zu importieren. Weitere Informationen zu SAS finden Sie unter Verwenden von Shared Access Signatures (SAS). Verwenden Sie für eine Shared Access Signature ausschließlich IDENTITY = SHARED ACCESS SIGNATURE.

  • Der Identitätsname muss MANAGED IDENTITY lauten, um eine Datei aus Azure Blob Storage mithilfe einer verwalteten Identität zu importieren.

  • Wenn Sie Kerberos (Windows Active Directory oder MIT KDC) verwenden, verwenden Sie nicht den Domainnamen im Argument IDENTITY . Sie sollten lediglich den Kontonamen verwenden.

  • In einer SQL-Server-Instanz wird bei der Erstellung einer datenbankbezogenen Zugangsberechtigung mit einem Storage Access Key als Referenz SECRETignoriert. IDENTITY

  • WITH IDENTITY ist nicht erforderlich, wenn der Container in Azure Blob Storage für anonymen Zugriff aktiviert ist. Ein Beispiel zum Abfragen von Azure Blob Storage mit OPENROWSET BULK, siehe Importieren in eine Tabelle aus einer Datei, die auf Azure Blob Storage gespeichert ist.

  • In SQL Server 2022 (16.x) und höheren Versionen ersetzt der REST-API Connector HADOOP. Für Azure Blob Storage und Azure Data Lake Gen 2 ist die einzige unterstützte Authentifizierungsmethode die Gemeinsame Zugriffssignatur. Weitere Informationen finden Sie unter CREATE EXTERNAL DATA SOURCE (CREATE EXTERNAL DATA SOURCE).

  • In SQL Server 2019 (15.x) ist die einzige externe PolyBase-Datenquelle, die kerberos-Authentifizierung unterstützt, Hadoop. Alle anderen externen Datenquellen (SQL Server, Oracle, Teradata, MongoDB, generisches ODBC) unterstützen nur die Standardauthentifizierung.

  • SQL-Pools in Azure Synapse Analytics enthalten folgende Hinweise:

    • Um Daten in Azure Synapse Analytics zu laden, kannst du jeden gültigen Wert für IDENTITYverwenden.
    • In einem serverlosen SQL-Pool von Azure Synapse Analytics können Anmeldeinformationen mit Datenbankbereich eine verwaltete Arbeitsbereichsidentität, einen Dienstprinzipalnamen oder ein SAS-Token (Shared Access Signature) angeben. Der Zugriff über eine Benutzeridentität, die durch Benutzeranmeldung mit Microsoft Entra Pass-Through-Authentifizierung ermöglicht wird, ist ebenfalls mit einer datenbankbezogenen Zugangsdaten möglich, ebenso wie anonymer Zugriff auf öffentlich verfügbaren Speicher. Weitere Informationen finden Sie unter Unterstützte Speicherautorisierungstypen.
    • In einem dedizierten SQL-Pool von Azure Synapse Analytics können Anmeldeinformationen mit Datenbankbereichssignatur (Shared Access Signature, SAS), benutzerdefinierte Anwendungsidentität, verwaltete Arbeitsbereichsidentität oder Speicherzugriffsschlüssel angeben.
Authentication T-SQL Supported Notes
Signatur für gemeinsam genutzten Zugriff (Shared Access Signature, SAS) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022 und höher, Azure SQL Managed Instance, Azure Synapse Analytics, Azure SQL-Datenbank
Verwaltete Identität CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Azure SQL-Datenbank, Azure SQL Managed Instance, SQL Server 2025 mit Azure Arc Um Azure Arc zu aktivieren, siehe Verwaltete Identität für SQL Server aktiviert von Azure Arc
Microsoft Entra Pass-Through-Authentifizierung über Benutzeridentität CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database, SQL database in Microsoft Fabric 1 In Azure Synapse siehe Benutzeranmeldung mit Microsoft Entra Pass-Through-Authentifizierung
S3 Access Key Basic Authentication CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022 und spätere Versionen
ODBC-Datenquellen oder Kerberos (MIT KDC) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; SQL Server 2019 und höher

1 In der SQL-Datenbank in Microsoft Fabric, wenn Sie keine datenbankbezogene Zugangsdaten angeben, setzt die Authentifizierungsmethode standardmäßig auf 'BENUTZERIDENTITÄT' und verwendet das Microsoft Entra-ID-Benutzerkonto als Kontext.

GEHEIM = 'geheim'

Gibt den geheimen Bereich an, der für die ausgehende Authentifizierung erforderlich ist. SECRET ist erforderlich, um eine Datei aus Azure Blob Storage zu importieren. Das Geheimnis muss der Azure-Speicherschlüssel sein, um aus Azure Blob Storage in Azure Synapse Analytics oder Parallel Data Warehouse zu laden.

Warning

Der SAS-Schlüsselwert kann mit einem Fragezeichen (?) beginnen. Wenn Sie die SAS-Taste verwenden, entfernen Sie die führende ?Taste.

Remarks

Datenbezogene 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. Die meisten Anmeldeinformationen schließen einen Windows-Benutzer und ein Kennwort ein.

Um die vertraulichen Informationen innerhalb der Anmeldeinformationen im Datenbankbereich zu schützen, ist ein Datenbankmasterschlüssel (DMK) erforderlich. Das DMK ist ein symmetrischer Schlüssel, der den geheimen Schlüssel in den Anmeldeinformationen des Datenbankbereichs verschlüsselt. Die Datenbank muss ein DMK haben, bevor du Datenbank-bezogene Zugangsdaten erstellen darfst. Verschlüssele die DMK mit einem starken Passwort. Azure SQL Database erstellt ein DMK mit einem starken, zufällig ausgewählten Passwort als Teil der Erstellung der datenbankbezogenen Zugangsdaten oder als Teil eines Server-Audits.

Benutzer können das DMK nicht in einer logischen master Datenbank erstellen. Das DMK-Passwort ist Microsoft unbekannt und nach der Erstellung nicht mehr auffindbar. Erstelle vor der Erstellung einer datenbankbezogenen Zugangsdaten eine DMK. Weitere Informationen finden Sie unter CREATE MASTER KEY.

Wenn ein IDENTITY Windows-Nutzer ist, kann das Geheimnis das Passwort sein. Das Geheimnis wird mit dem Service Master Key (SMK) verschlüsselt. Wenn du das SMK regenerierst, wird das Geheimnis mit dem neuen SMK neu verschlüsselt.

Wenn Sie Berechtigungen für eine Shared Access Signature (SAS) für die Verwendung mit einer externen PolyBase-Tabelle erteilen, wählen Sie sowohl Container als auch Objekt als erlaubte Ressourcentypen aus. Wenn Sie diese Berechtigungen nicht erteilen, könnten Sie beim Versuch, auf die externe Tabelle zuzugreifen, den Fehler 16535 oder 16561 erhalten.

Informationen zu datenbankbezogenen Zugangsdaten finden Sie in der sys.database_scoped_credentials Katalogansicht.

Im Folgenden werden einige Anwendungen datenbankweit gültiger Anmeldeinformationen aufgezeigt:

Permissions

Erfordert die CONTROL-Berechtigung für die Datenbank.

Examples

A. Erstellen einer datenbankbezogenen Anmeldeinformationen für Ihre Anwendung

Im folgenden Beispiel werden datenbankweit gültige Anmeldeinformationen mit der Bezeichnung AppCred erstellt. Die datenbankweit gültigen Anmeldeinformationen enthalten den Windows-Benutzer Mary5 und ein Kennwort.

Erstelle ein DMK, falls es noch keines gibt. Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.

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

Erstellen Sie eine datenbankbezogene Zugangsberechtigung:

CREATE DATABASE SCOPED CREDENTIAL AppCred
WITH IDENTITY = 'Mary5',
     SECRET = '<password>';

B. Erstellen einer datenbankbezogenen Anmeldeinformationen für eine freigegebene Zugriffssignatur

Das folgende Beispiel erstellt eine datenbankbezogene Zugangsberechtigung, die Sie verwenden können, um eine externe Datenquelle zu erstellen. Diese Zugangsberechtigung kann Massenoperationen durchführen, wie BULK INSERT und OPENROWSET BULK.

Erstelle ein DMK, falls es noch keines gibt. Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.

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

Erstellen Sie eine Datenbank mit Anmeldeinformationen mit Bereich. Ersetzen sie <key> durch den entsprechenden Wert.

CREATE DATABASE SCOPED CREDENTIAL MyCredentials
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
     SECRET = '<key>';

C. Erstellen einer datenbankbezogenen Anmeldeinformationen für PolyBase Connectivity mit Azure Data Lake Store

Im folgenden Beispiel werden datenbankweit gültige Anmeldeinformationen erstellt, die zum Erstellen einer externen Datenquelle verwendet werden können, die wiederum von PolyBase in Azure Synapse Analytics verwendet werden kann.

Azure Data Lake Store verwendet eine Microsoft Entra-Anwendung für Service-zu-Service-Authentifizierung.

Erstellen Sie eine Microsoft Entra-Anwendung , und dokumentieren Sie Ihre client_id, OAuth_2.0_Token_EndPoint und Key, bevor Sie versuchen, anmeldeinformationen mit Datenbankbereich zu erstellen.

Erstelle ein DMK, falls es noch keines gibt. Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.

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

Erstellen Sie eine Datenbank mit Anmeldeinformationen mit Bereich. Ersetzen sie <key> durch den entsprechenden Wert.

CREATE DATABASE SCOPED CREDENTIAL ADL_User
WITH IDENTITY = '<client_id>@<OAuth_2.0_Token_EndPoint>',
     SECRET = '<key>';

D. Erstellen einer datenbankbezogenen Anmeldeinformationen mithilfe von verwalteter Identität

Gilt für: SQL Server 2025 (17.x) und spätere Versionen

SQL Server 2025 (17.x) bietet Unterstützung für von Microsoft Entra verwaltete Identitäten. Für Informationen darüber, wie man eine verwaltete Identität mit SQL Server durch Azure Arc aktiviert benutzt, siehe Managed identity for SQL Server enabled by Azure Arc.

EXECUTE sp_configure 'allow server scoped db credentials', 1;
RECONFIGURE;
GO

CREATE DATABASE SCOPED CREDENTIAL [managed_id]
WITH IDENTITY = 'Managed Identity';

E. Erstellen Sie eine Datenbank-Scoped-Credential mit Microsoft Entra ID

Gilt für: Azure SQL Database, SQL-Datenbank in Microsoft Fabric

In Azure SQL Database und SQL-Datenbank in Microsoft Fabric können Sie Ihr eigenes Microsoft Entra ID-Konto verwenden, um eine externe Datenquelle zu authentifizieren.

In der SQL-Datenbank in Microsoft Fabric, wenn man keine datenbankbezogene Zugangsdaten angibt, setzt die Authentifizierungsmethode standardmäßig das USER IDENTITY Entra-ID-Benutzerkonto als Kontext auf und nutzt sie.

CREATE DATABASE SCOPED CREDENTIAL MyCredential
WITH IDENTITY = 'User Identity';