Delen via


CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric Preview

Hiermee maakt u een databasereferentie. Een databasereferentie is niet toegewezen aan een serveraanmelding of databasegebruiker. De referentie wordt door de database gebruikt voor toegang tot de externe locatie wanneer de database een bewerking uitvoert waarvoor toegang is vereist.

Transact-SQL syntaxis-conventies

Syntax

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

Arguments

credential_name

Hiermee geeft u de naam op van de databasereferentie die wordt gemaakt. credential_name kan niet beginnen met het nummerteken (#). Systeemreferenties beginnen met ##. De maximale lengte van credential_name is 128 tekens.

IDENTITY = 'identity_name'

Hiermee geeft u de naam op van het account dat moet worden gebruikt bij het maken van verbinding buiten de server.

  • Als u een bestand wilt importeren uit Azure Blob Storage of Azure Data Lake Storage met behulp van een gedeelde sleutel, moet de identiteitsnaam zijn SHARED ACCESS SIGNATURE. Zie Shared Access Signatures (SAS) gebruiken voor meer informatie over handtekeningen voor gedeelde toegang. Alleen gebruiken IDENTITY = SHARED ACCESS SIGNATURE voor een handtekening voor gedeelde toegang.
  • Als u een bestand wilt importeren uit Azure Blob Storage met behulp van een beheerde identiteit, moet de identiteitsnaam zijn MANAGED IDENTITY.
  • Wanneer u Kerberos (Windows Active Directory of MIT KDC) gebruikt, gebruikt u niet de domeinnaam in het IDENTITY argument. Dit moet alleen de accountnaam zijn.
  • Als u in een SQL Server-exemplaar een databasereferentie met een opslagtoegangssleutel maakt die wordt gebruikt als opslagtoegangssleutel SECRET, IDENTITY wordt genegeerd.
  • WITH IDENTITY is niet vereist als de container in Azure Blob Storage is ingeschakeld voor anonieme toegang. Zie OPENROWSET BULK Storage.
  • In SQL Server 2022 (16.x) en latere versies vervangt de REST-API-connector HADOOP. Voor Azure Blob Storage en Azure Data Lake Gen 2 is de enige ondersteunde verificatiemethode shared access Signature. Zie CREATE EXTERNAL DATA SOURCE (Transact-SQL)voor meer informatie.
  • In SQL Server 2019 (15.x) is Hadoop de enige externe PolyBase-gegevensbron die Kerberos-verificatie ondersteunt. Alle andere externe gegevensbronnen (SQL Server, Oracle, Teradata, MongoDB, algemene ODBC) ondersteunen alleen basisverificatie.
  • SQL-pools in Azure Synapse Analytics bevatten de volgende opmerkingen:
    • Voor het laden van gegevens in Azure Synapse Analytics kan elke geldige waarde worden gebruikt.IDENTITY
    • In een serverloze SQL-pool van Azure Synapse Analytics kunnen databasereferenties een beheerde identiteit, service-principalnaam of SAS-token (Shared Access Signature) opgeven. Toegang via een gebruikersidentiteit, ingeschakeld door passthrough-verificatie van Microsoft Entra, is ook mogelijk met een databasereferentie, zoals anonieme toegang tot openbaar beschikbare opslag. Zie Ondersteunde typen opslagautorisatie voor meer informatie.
    • In een toegewezen SQL-pool van Azure Synapse Analytics kunnen databasereferenties sas-token (Shared Access Signature), aangepaste toepassingsidentiteit, beheerde identiteit van werkruimte of toegangssleutel voor opslag opgeven.
Authentication T-SQL Supported Notes
Shared Access Signature (SAS) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022, Azure SQL Managed Instance, Azure Synapse Analytics, Azure SQL Database
Managed Identity CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Azure SQL Database, SQL Managed Identity
PassThrough-verificatie van Microsoft Entra via gebruikersidentiteit CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database Zie Microsoft Entra Connect in Azure Synapse: Pass Through-verificatie
Basisverificatie van S3-toegangssleutel CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022
Kerberos (Windows Active Directory of MIT KDC) of voor ODBC-gegevensbronnen CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; Hadoop-only versies van SQL

SECRET = 'secret'

Hiermee geeft u het geheim op dat is vereist voor uitgaande verificatie. SECRET is vereist voor het importeren van een bestand uit Azure Blob Storage. Als u vanuit Azure Blob Storage wilt laden in Azure Synapse Analytics of Parallel Data Warehouse, moet het geheim de Azure Storage-sleutel zijn.

Warning

De SAS-sleutelwaarde kan beginnen met een '?' (vraagteken). Wanneer u de SAS-sleutel gebruikt, moet u de voorloopsleutel '?' verwijderen. Anders worden uw inspanningen mogelijk geblokkeerd.

Remarks

Een databasereferentie is een record die de verificatiegegevens bevat die nodig zijn om verbinding te maken met een resource buiten SQL Server. De meeste referenties bevatten een Windows-gebruiker en -wachtwoord.

Als u de gevoelige informatie in de databasereferenties wilt beveiligen, is een databasehoofdsleutel (DMK) vereist. De DMK is een symmetrische sleutel waarmee het geheim in de databasereferentie wordt versleuteld. De database moet een DMK hebben voordat referenties voor databasebereik kunnen worden gemaakt. Een DMK moet worden versleuteld met een sterk wachtwoord. Azure SQL Database maakt een DMK met een sterk, willekeurig geselecteerd wachtwoord als onderdeel van het maken van de databasereferenties of als onderdeel van het maken van een servercontrole. Gebruikers kunnen de DMK niet maken in een logische master database. Het hoofdsleutelwachtwoord is onbekend bij Microsoft en kan niet worden gedetecteerd na het maken. Daarom wordt het maken van een DMK aanbevolen voordat u een referentie met databasebereik maakt. Zie CREATE MASTER KEY (Transact-SQL)voor meer informatie.

Wanneer IDENTITY een Windows-gebruiker is, kan het geheim het wachtwoord zijn. Het geheim wordt versleuteld met behulp van de servicehoofdsleutel (SMK). Als de SMK opnieuw wordt gegenereerd, wordt het geheim opnieuw versleuteld met behulp van de nieuwe SMK.

Wanneer u machtigingen verleent voor shared access signatures (SAS) voor gebruik met een externe PolyBase-tabel, selecteert u zowel Container als Object als toegestane resourcetypen. Als dit niet is verleend, krijgt u mogelijk fout 16535 of 16561 wanneer u toegang probeert te krijgen tot de externe tabel.

Informatie over databasereferenties is zichtbaar in de sys.database_scoped_credentials catalogusweergave.

Hier volgen enkele toepassingen met databasereferenties:

Permissions

Vereist control-machtiging voor de database.

Examples

A. Een databasereferentie maken voor uw toepassing

In het volgende voorbeeld wordt de databasereferentie met de naam AppCredgemaakt. De referentie voor het databasebereik bevat de Windows-gebruiker Mary5 en een wachtwoord.

-- 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. Een databasereferentie maken voor een Shared Access Signature

In het volgende voorbeeld wordt een databasereferentie gemaakt die kan worden gebruikt voor het maken van een externe gegevensbron, die bulkbewerkingen kan uitvoeren, zoals BULK INSERT (Transact-SQL) en OPENROWSET (Transact-SQL).

-- 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. Een databasereferentie maken voor PolyBase-connectiviteit met Azure Data Lake Store

In het volgende voorbeeld wordt een databasereferentie gemaakt die kan worden gebruikt voor het maken van een externe gegevensbron, die kan worden gebruikt door PolyBase in Azure Synapse Analytics.

Azure Data Lake Store maakt gebruik van een Microsoft Entra-toepassing voor service-naar-serviceverificatie.

Maak een Microsoft Entra-toepassing en documenteer uw client_id, OAuth_2.0_Token_EndPoint en Key voordat u probeert een referentie met databasebereik te maken.

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