Udostępnij za pomocą


UTWORZENIE DANYCH O SKALI BAZY DANYCH (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Database w Microsoft Fabric

Tworzy poświadczenie bazy danych. Dane dane bazowe nie są przypisane do logowania serwera ani użytkownika bazy danych. Baza danych wykorzystuje dane uwierzytelniające do uzyskania dostępu do zewnętrznego zasobu, gdy wykonuje operację wymagającą dostępu.

Transact-SQL konwencje składni

Syntax

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

Arguments

credential_name

Określa nazwę tworzonego poświadczenia o zakresie bazy danych. credential_name nie można rozpocząć od znaku numeru (#). Poświadczenia systemowe zaczynają się od ##. Maksymalna długość credential_name wynosi 128 znaków.

TOŻSAMOŚĆ = 'identity_name'

Określa nazwę konta, którego należy używać podczas łączenia się poza serwerem.

  • Aby zaimportować plik z usługi Azure Blob Storage lub Azure Data Lake Storage przy użyciu klucza współużytkowanego, nazwa tożsamości musi mieć wartość SHARED ACCESS SIGNATURE. Aby uzyskać więcej informacji na temat sygnatur dostępu współdzielonego, zobacz Używanie sygnatur dostępu współdzielonego (SAS). Użyj IDENTITY = SHARED ACCESS SIGNATURE tylko dla sygnatury dostępu współdzielonego.

  • Aby zaimportować plik z usługi Azure Blob Storage przy użyciu tożsamości zarządzanej, nazwa tożsamości musi mieć wartość MANAGED IDENTITY.

  • Używając Kerberos (Windows Active Directory lub MIT KDC), nie używaj nazwy domeny w argumentze IDENTITY . Powinna to być tylko nazwa konta.

  • W instancji SQL Server, jeśli utworzysz dane o skali bazy danych, gdzie Storage Access Key jest używany jako , SECRETIDENTITY jest to ignorowane.

  • WITH IDENTITY nie jest wymagany, jeśli kontener w pamięci Azure Blob jest włączony do anonimowego dostępu. Aby zapoznać się z przykładem wykonywania zapytań dotyczących usługi Azure Blob Storage za pomocą OPENROWSET BULKpolecenia , zobacz Importowanie do tabeli z pliku przechowywanego w usłudze Azure Blob Storage.

  • W programie SQL Server 2022 (16.x) i nowszych wersjach łącznik REST-API zastępuje usługę HADOOP. W przypadku usług Azure Blob Storage i Azure Data Lake Gen 2 jedyną obsługiwaną metodą uwierzytelniania jest sygnatura dostępu współdzielonego. Aby uzyskać więcej informacji, zobacz CREATE EXTERNAL DATA SOURCE.

  • W programie SQL Server 2019 (15.x) jedynym zewnętrznym źródłem danych polyBase obsługującym uwierzytelnianie Kerberos jest usługa Hadoop. Wszystkie inne zewnętrzne źródła danych (SQL Server, Oracle, Teradata, MongoDB, generic ODBC) obsługują tylko uwierzytelnianie podstawowe.

  • Pule SQL w Azure Synapse Analytics zawierają następujące uwagi:

    • Aby załadować dane do Azure Synapse Analytics, możesz użyć dowolnej poprawnej wartości dla IDENTITY.
    • W bezserwerowej puli SQL usługi Azure Synapse Analytics poświadczenia o zakresie bazy danych mogą określać tożsamość zarządzaną obszaru roboczego, nazwę główną usługi lub token sygnatury dostępu współdzielonego (SAS). Dostęp przez tożsamość użytkownika, umożliwiony przez logowanie użytkownika z uwierzytelnianiem Microsoft Entra pass-through, jest również możliwy za pomocą danych, podobnie jak anonimowy dostęp do publicznie dostępnej pamięci masowej. Aby uzyskać więcej informacji, zobacz Obsługiwane typy autoryzacji magazynu.
    • W dedykowanej puli SQL usługi Azure Synapse Analytics poświadczenia o zakresie bazy danych mogą określać token sygnatury dostępu współdzielonego (SAS), niestandardową tożsamość aplikacji, tożsamość zarządzaną obszaru roboczego lub klucz dostępu do magazynu.
Authentication T-SQL Supported Notes
Sygnatura dostępu współdzielonego CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'SHARED ACCESS SIGNATURE', SECRET = 'secret'; SQL Server 2022 i nowsze wersje, Azure SQL Managed Instance, Azure Synapse Analytics, Azure SQL Database
Tożsamość zarządzana CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'MANAGED IDENTITY'; Azure SQL Database, Azure SQL Managed Instance, SQL Server 2025 z usługą Azure Arc Aby włączyć Azure Arc, zobacz Managed identity for SQL Server enabled by Azure Arc
Uwierzytelnianie przekazywane przez firmę Microsoft Entra za pośrednictwem tożsamości użytkownika CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'USER IDENTITY'; Azure SQL Database, SQL database in Microsoft Fabric 1 W Azure Synapse zobacz User log-in with Microsoft Entra pass-through authentication
Uwierzytelnianie podstawowe klucza dostępu S3 CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = 'S3 ACCESS KEY', SECRET = '<accesskey>:<secretkey>'; SQL Server 2022 i późniejsze wersje
Źródła danych ODBC lub Kerberos (MIT KDC) CREATE DATABASE SCOPED CREDENTIAL <credential_name> WITH IDENTITY = '<identity_name>', SECRET = '<secret>'; SQL Server 2019 i nowsze wersje

1 W bazie danych SQL w Microsoft Fabric, jeśli nie określisz poświadczenia opartego na bazie danych, metoda uwierzytelniania domyślnie przyjmuje 'USER IDENTITY' i używa konta użytkownika Microsoft Entra ID jako kontekstu.

SECRET = 'tajemnica'

Określa wpis tajny wymagany do uwierzytelniania wychodzącego. SECRET program jest wymagany do zaimportowania pliku z usługi Azure Blob Storage. Aby załadować usługę Azure Blob Storage do usługi Azure Synapse Analytics lub parallel Data Warehouse, wpis tajny musi być kluczem usługi Azure Storage.

Warning

Wartość klucza sygnatury dostępu współdzielonego może zaczynać się od znaku zapytania (?). W przypadku korzystania z klucza SAS usuń wiodący ?element .

Remarks

Poświadczenie o zakresie bazy danych to rekord zawierający informacje uwierzytelniania wymagane do nawiązania połączenia z zasobem poza programem SQL Server. Większość poświadczeń obejmuje użytkownika i hasło systemu Windows.

Aby chronić poufne informacje wewnątrz poświadczeń o zakresie bazy danych, wymagany jest klucz główny bazy danych (DMK). Klucz DMK to klucz symetryczny, który szyfruje wpis tajny w poświadczeniu o zakresie bazy danych. Baza danych musi mieć DMK, zanim można utworzyć jakiekolwiek poświadczenia o skali bazy danych. Zaszyfruj DMK silnym hasłem. Baza danych Azure SQL tworzy DMK z silnym, losowo wybranym hasłem jako część tworzenia danych danych lub audytu serwera.

Użytkownicy nie mogą utworzyć zestawu DMK w logicznej master bazie danych. Hasło DMK jest nieznane Microsoftowi i nie jest możliwe do odkrycia po utworzeniu. Utworzenie DMK przed utworzeniem poświadczenia o skali bazy danych. Aby uzyskać więcej informacji, zobacz CREATE MASTER KEY.

Gdy IDENTITY jest użytkownikiem Windows, sekret może być hasłem. Sekret jest szyfrowany za pomocą klucza głównego serwisu (SMK). Jeśli zregenerujesz SMK, sekret zostaje ponownie zaszyfrowany nowym SMK.

Przy przyznawaniu uprawnień do współdzielonego podpisu dostępu (SAS) do użycia z zewnętrzną tabelą PolyBase, wybierz zarówno Kontener, jak i Obiekt jako dozwolone typy zasobów. Jeśli nie przydzielisz tych uprawnień, możesz otrzymać błąd 16535 lub 16561 podczas próby dostępu do zewnętrznej tabeli.

Aby uzyskać informacje o poświadczeniach objętych zakresem bazy danych, zobacz widok katalogu sys.database_scoped_credentials .

Oto niektóre aplikacje poświadczeń o zakresie bazy danych:

  • Program SQL Server używa poświadczeń o zakresie bazy danych do uzyskiwania dostępu do niepublicznych klastrów usługi Azure Blob Storage lub Klastrów Hadoop zabezpieczonych przy użyciu protokołu Kerberos za pomocą technologii PolyBase. Aby uzyskać więcej informacji, zobacz CREATE EXTERNAL DATA SOURCE.

  • Usługa Azure Synapse Analytics używa poświadczeń o zakresie bazy danych w celu uzyskania dostępu do usługi Azure Blob Storage spoza publicznej usługi Azure Blob Storage za pomocą technologii PolyBase. Aby uzyskać więcej informacji, zobacz CREATE EXTERNAL DATA SOURCE. Aby uzyskać więcej informacji na temat uwierzytelniania magazynu usługi Azure Synapse, zobacz Używanie tabel zewnętrznych z usługą Synapse SQL.

  • SQL Database wykorzystuje dane uwierzytelniające ograniczone do funkcji elastycznego zapytania , która umożliwia zapytania na wielu fragmentach bazy danych.

  • Usługa SQL Database używa poświadczeń o zakresie bazy danych do zapisywania rozszerzonych plików zdarzeń w usłudze Azure Blob Storage.

  • Usługa SQL Database używa poświadczeń o zakresie bazy danych dla pul elastycznych. Więcej informacji znajdziesz w artykule Elastic pools, które pomagają zarządzać i skalować wiele baz danych w Azure SQL Database

  • BULK INSERT i OPENROWSET wykorzystują dane poświadczenia o skali bazy danych do dostępu do danych z Azure Blob Storage. Więcej informacji można znaleźć w artykule Przykłady masowego dostępu do danych w Azure Blob Storage.

  • Użyj poświadczeń o zakresie bazy danych z funkcjami wirtualizacji danych PolyBase i wirtualizacji danych usługi Azure SQL Managed Instance.

  • Dla BACKUP TO URL i RESTORE FROM URL, użyj poświadczenia na poziomie serwera za pomocą CREATE CREDENTIAL zamiast tego.

  • Używaj danych danych uwierzytelniających z CREATE EXTERNAL MODEL

Permissions

Wymaga uprawnienia CONTROL do bazy danych.

Examples

A. Tworzenie poświadczeń o zakresie bazy danych dla aplikacji

Poniższy przykład tworzy poświadczenie o zakresie bazy danych o nazwie AppCred. Poświadczenie o zakresie bazy danych zawiera użytkownika Mary5 systemu Windows i hasło.

Stwórz DMK, jeśli jeszcze nie istnieje. Nie używaj pustego hasła. Użyj silnego hasła.

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

Stwórz dane uwierzytelniające w zakresie bazy danych:

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

B. Tworzenie poświadczeń o zakresie bazy danych dla sygnatury dostępu współdzielonego

Poniższy przykład tworzy dane poświadczenia ograniczone do bazy danych, które można wykorzystać do stworzenia zewnętrznego źródła danych. Ten certyfikat może wykonywać operacje masowe, takie jak BULK INSERT i OPENROWSET BULK.

Stwórz DMK, jeśli jeszcze nie istnieje. Nie używaj pustego hasła. Użyj silnego hasła.

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

Utwórz poświadczenie o zakresie bazy danych. Zastąp <key> element odpowiednią wartością.

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

C. Tworzenie poświadczeń o zakresie bazy danych dla łączności polyBase z usługą Azure Data Lake Store

Poniższy przykład tworzy poświadczenie o zakresie bazy danych, które można użyć do utworzenia zewnętrznego źródła danych, które może być używane przez program PolyBase w usłudze Azure Synapse Analytics.

Azure Data Lake Store używa aplikacji Microsoft Entra do uwierzytelniania service-to-service.

Utwórz aplikację Firmy Microsoft Entra i udokumentuj client_id, OAuth_2.0_Token_EndPoint i Klucz przed podjęciem próby utworzenia poświadczeń o zakresie bazy danych.

Stwórz DMK, jeśli jeszcze nie istnieje. Nie używaj pustego hasła. Użyj silnego hasła.

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

Utwórz poświadczenie o zakresie bazy danych. Zastąp <key> element odpowiednią wartością.

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

D. Tworzenie poświadczeń o zakresie bazy danych przy użyciu tożsamości zarządzanej

Dotyczy do: SQL Server 2025 (17.x) i nowszych wersji

Program SQL Server 2025 (17.x) wprowadza obsługę tożsamości zarządzanych przez firmę Microsoft Entra. Aby uzyskać informacje o tym, jak korzystać z zarządzanej tożsamości z SQL Server włączonym przez Azure Arc, zobacz 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. Stwórz dane uwierzytelniające o skali bazy danych za pomocą Microsoft Entra ID

Dotyczy do: Azure SQL Database, SQL database w Microsoft Fabric

W Azure SQL Database oraz SQL w Microsoft Fabric możesz użyć własnego konta Microsoft Entra ID do uwierzytelnienia zewnętrznego źródła danych.

W bazie danych SQL w Microsoft Fabric, jeśli nie określisz danych, metoda uwierzytelniania domyślnie używa USER IDENTITY konta użytkownika Entra ID jako kontekstu.

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