Delen via


MAAK DATABASE-SCOPED CREDENTIAL AAN (Transact-SQL)

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

Hiermee maakt u een databasereferentie. Een database-credential wordt niet gekoppeld aan een serverlogin of databasegebruiker. De database gebruikt het inloggegevens om toegang te krijgen tot de externe bron wanneer een operatie wordt uitgevoerd die toegang 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.

IDENTITEIT = 'identity_name'

Geeft de naam van het account aan dat gebruikt moet worden bij 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.

  • Bij gebruik van Kerberos (Windows Active Directory of MIT KDC), gebruik dan niet de domeinnaam in het IDENTITY argument. Dit moet alleen de accountnaam zijn.

  • In een SQL Server-instantie, als je een database-scoped credential aanmaakt met een Storage Access Key als de SECRET, IDENTITY wordt genegeerd.

  • WITH IDENTITY is niet vereist als de container in Azure Blob Storage anoniem toegang kan geven. 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 SOURCEvoor 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 notities:

    • Om data in Azure Synapse Analytics te laden, kun je elke geldige waarde gebruiken voor 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, mogelijk gemaakt door gebruikersaanmelding met Microsoft Entra pass-through authenticatie, is ook mogelijk met een database-scoped credential, evenals 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
Gedeelde Toegangshandtekening (SAS) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022 en hoger, Azure SQL Managed Instance, Azure Synapse Analytics, Azure SQL Database
Beheerde identiteit CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Azure SQL Database, Azure SQL Managed Instance, SQL Server 2025 met Azure Arc Om Azure Arc in te schakelen, zie Managed identity for SQL Server enabled by Azure Arc
PassThrough-verificatie van Microsoft Entra via gebruikersidentiteit CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database, SQL database in Microsoft Fabric 1 In Azure Synapse, zie User sign-in with Microsoft Entra pass-through authentication
Basisverificatie van S3-toegangssleutel CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022 en latere versies
ODBC-gegevensbronnen of Kerberos (MIT KDC) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; SQL Server 2019 en latere versies

1 In een SQL-database in Microsoft Fabric, als je geen database-scope credential specificeert, staat de authenticatiemethode standaard op 'USER IDENTITY' en gebruikt het Microsoft Entra ID-gebruikersaccount als context.

SECRET = 'geheim'

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, verwijdert u de voorloop ?.

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 je databasescoped credentials kunt aanmaken. Versleutel de DMK met een sterk wachtwoord. Azure SQL Database maakt een DMK aan met een sterk, willekeurig geselecteerd wachtwoord als onderdeel van het creëren van de databasescoped credential, of als onderdeel van het maken van een serveraudit.

Gebruikers kunnen de DMK niet maken in een logische master database. Het DMK-wachtwoord is onbekend bij Microsoft en niet meer te vinden na het aanmaken. Maak een DMK aan voordat je een database-scope credential aanmaakt. Zie CREATE MASTER KEYvoor meer informatie.

Als Windows-gebruiker IDENTITY kan het geheim het wachtwoord zijn. Het geheim wordt versleuteld met de service master key (SMK). Als je de SMK regenereert, wordt het geheim opnieuw versleuteld met de nieuwe SMK.

Wanneer je rechten verleent voor een shared access-handtekening (SAS) voor gebruik met een PolyBase-externe tabel, selecteer je zowel Container als Object als toegestane resourcetypen. Als je deze rechten niet verleent, kun je foutmelding 16535 of 16561 krijgen wanneer je probeert toegang te krijgen tot de externe tabel.

Voor informatie over databasescoped credentials, zie de catalogusweergave sys.database_scoped_credentials .

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.

Maak een DMK aan als die nog niet bestaat. Gebruik geen leeg wachtwoord. Gebruik een sterk wachtwoord.

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

Maak een database-scoped credential aan:

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

B. Een databasereferentie maken voor een Shared Access Signature

Het volgende voorbeeld creëert een database-scoped credential die je kunt gebruiken om een externe databron aan te maken. Dit inloggegevens kan bulkbewerkingen uitvoeren, zoals BULK INSERT en OPENROWSET BULK.

Maak een DMK aan als die nog niet bestaat. Gebruik geen leeg wachtwoord. Gebruik een sterk wachtwoord.

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

Maak een databasereferentie binnen het bereik. Vervang <key> door de juiste waarde.

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

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 gebruikt een Microsoft Entra-applicatie voor service-to-service authenticatie.

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.

Maak een DMK aan als die nog niet bestaat. Gebruik geen leeg wachtwoord. Gebruik een sterk wachtwoord.

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

Maak een databasereferentie binnen het bereik. Vervang <key> door de juiste waarde.

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

D. Een databasereferentie maken met beheerde identiteit

Van toepassing op: SQL Server 2025 (17.x) en latere versies

SQL Server 2025 (17.x) introduceert ondersteuning voor door Microsoft Entra beheerde identiteiten. Voor informatie over hoe je een beheerde identiteit gebruikt met SQL Server ingeschakeld door Azure Arc, zie Beheerde identiteit voor SQL Server ingeschakeld door Azure Arc.

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

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

E. Maak een databasescoped credential aan met Microsoft Entra ID

Van toepassing op: Azure SQL Database, SQL database in Microsoft Fabric

In Azure SQL Database en SQL Database in Microsoft Fabric kun je je eigen Microsoft Entra ID-account gebruiken om een externe databron te authenticeren.

In een SQL-database in Microsoft Fabric, als je geen database-scoped credential specificeert, wordt de authenticatiemethode standaard gebruikt USER IDENTITY en gebruikt het het Entra-ID gebruikersaccount als context.

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