CREATE USER (Transact-SQL)
platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform Platform System (PDW)databáze SQL v Microsoft Fabric
Přidá uživatele do aktuální databáze. Seznam 13 typů uživatelů s ukázkou nejzásadnější syntaxe:
Poznámka
I když je ID Microsoft Entra novým názvem proAzure Active Directory (Azure AD), aby se zabránilo narušení existujících prostředí, Azure AD stále zůstává v některých pevně zakódovaných prvcích, jako jsou pole uživatelského rozhraní, zprostředkovatelé připojení, kódy chyb a rutiny. V tomto článku jsou tyto dva názvy zaměnitelné.
Uživatelé na základě přihlášení v master
Uživatel založený na přihlášení na základě účtu služby Windows Active Directory.
CREATE USER [Contoso\Fritz];
Uživatel založený na přihlášení na základě skupiny Windows.
CREATE USER [Contoso\Sales];
Uživatel založený na přihlášení pomocí ověřování SQL Serveru.
CREATE USER Mary;
Uživatel založený na přihlášení Microsoft Entra.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Poznámka
instanční objekty serveru Microsoft Entra (přihlášení) jsou aktuálně ve verzi Public Preview pro Azure SQL Database.
Poznámka
V databázi SQL v Microsoft Fabric nejsou podporována přihlášení, a proto se uživatelé na základě přihlášení nepodporují.
Uživatelé, kteří se ověřují v databázi – doporučuje se, aby byla vaše databáze přenosnější.
Ve službě SQL Database je vždy povoleno. Povoleno pouze v obsažené databázi na SQL Serveru.
Uživatel založený na uživateli Systému Windows, který nemá žádné přihlášení.
CREATE USER [Contoso\Fritz];
Uživatel založený na skupině Systému Windows, která nemá žádné přihlášení.
CREATE USER [Contoso\Sales];
Uživatel ve službě SQL Database nebo Azure Synapse Analytics založený na uživateli Microsoft Entra.
CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;
Uživatel databáze s omezením s heslem (Není k dispozici ve službě Azure Synapse Analytics.)
CREATE USER Mary WITH PASSWORD = '********';
Uživatelé na základě objektů zabezpečení systému Windows, které se připojují prostřednictvím přihlášení skupiny Windows
Uživatel založený na uživateli windows, který nemá žádné přihlášení, ale může se připojit k databázovému stroji prostřednictvím členství ve skupině Windows.
CREATE USER [Contoso\Fritz];
Uživatel založený na skupině Windows, která nemá žádné přihlášení, se ale může připojit k databázovému stroji prostřednictvím členství v jiné skupině Windows.
CREATE USER [Contoso\Fritz];
Uživatelé, kteří nemůžou ověřit – tito uživatelé se nemůžou přihlásit k SQL Serveru nebo službě SQL Database.
- Uživatel bez přihlášení. Nelze se přihlásit, ale můžete jim udělit oprávnění.
CREATE USER CustomApp WITHOUT LOGIN;
- Uživatel založený na certifikátu. Nejde se přihlásit, ale dá se udělit oprávnění a může podepisovat moduly.
CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
- Uživatel založený na asymetrického klíči. Nejde se přihlásit, ale dá se udělit oprávnění a může podepisovat moduly.
CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;
Syntax
Syntaxe pro SQL Server, Azure SQL Database, Azure SQL Managed Instance
-- Syntax Users based on logins in master
CREATE USER user_name
[
{ FOR | FROM } LOGIN login_name
]
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
-- Users that authenticate at the database
CREATE USER
{
windows_principal [ WITH <options_list> [ ,... ] ]
| user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]
| Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users based on Windows principals that connect through Windows group logins
CREATE USER
{
windows_principal [ { FOR | FROM } LOGIN windows_principal ]
| user_name { FOR | FROM } LOGIN windows_principal
}
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
-- Users that cannot authenticate
CREATE USER user_name
{
WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]
| { FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| SID = sid
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
-- SQL Database syntax when connected to a federation member
CREATE USER user_name
[;]
-- Syntax for users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name
[ { FOR | FROM } LOGIN login_name ]
| FROM EXTERNAL PROVIDER
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
Syntaxe pro Azure Synapse Analytics
CREATE USER user_name
[ { { FOR | FROM } { LOGIN login_name }
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Syntaxe pro databázi SQL v Microsoft Fabric
CREATE USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ ,... ] ]
| Microsoft_Entra_principal WITH <options_list> [ ,... ]
}
[ ; ]
-- Users that cannot authenticate
CREATE USER user_name
{ WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]
| { FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| OBJECT_ID = 'objectid'
<options_list> ::=
DEFAULT_SCHEMA = schema_name
| SID = sid
| TYPE = { X | E }
Syntaxe paralelního datového skladu
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Argumenty
user_name
Určuje jméno, podle kterého je uživatel identifikován uvnitř této databáze.
PŘIHLÁŠENÍ login_name
Určuje přihlášení, pro které se vytváří uživatel databáze. login_name musí být platným přihlášením na serveru. Může to být přihlášení založené na objektu zabezpečení systému Windows (uživatel nebo skupina), přihlášení pomocí ověřování SQL Serveru nebo přihlášení pomocí objektu zabezpečení Microsoft Entra (uživatel, skupina nebo aplikace). Když toto přihlášení k SQL Serveru zadá databázi, získá název a ID uživatele databáze, který se vytváří. Při vytváření přihlášení mapovaného z objektu zabezpečení Systému Windows použijte formát [<domainName>\<loginName>]. Příklady najdete v části souhrn syntaxe .
Pokud je příkaz CREATE USER jediným příkazem v dávce SQL, Azure SQL Database podporuje klauzuli WITH LOGIN. Pokud příkaz CREATE USER není jediným příkazem v dávce SQL nebo se spouští v dynamickém SQL, klauzule WITH LOGIN se nepodporuje.
WITH DEFAULT_SCHEMA = schema_name
Určuje první schéma, které bude server prohledávat při překladu názvů objektů pro tohoto uživatele databáze.
'windows_principal'
Určuje objekt zabezpečení systému Windows, pro který se vytváří uživatel databáze. windows_principal může být uživatel Windows nebo skupina Windows. Uživatel se vytvoří, i když windows_principal nemá přihlášení. Pokud windows_principal nemá při připojování k SQL Serveru přihlašovací údaje, musí se instanční objekt Windows ověřit v databázovém stroji prostřednictvím členství ve skupině Windows, která má přihlášení, nebo připojovací řetězec musí jako počáteční katalog zadat obsaženou databázi. Při vytváření uživatele z objektu zabezpečení systému Windows použijte formát [<domainName>\<loginName>]. Příklady najdete v části souhrn syntaxe . Uživatelé založené na uživatelích služby Active Directory jsou omezeni na názvy kratší než 21 znaků.
'Microsoft_Entra_principal'
platí pro: SQL Database, SQL Managed Instance, Azure Synapse Analytics, databáze SQL v Microsoft Fabric
Určuje objekt zabezpečení Microsoft Entra, pro který se vytváří uživatel databáze. Microsoft_Entra_principal může být uživatel Microsoft Entra, skupina Microsoft Entra nebo aplikace Microsoft Entra. (Uživatelé Microsoft Entra nemůžou mít ve službě SQL Database přihlášení k ověřování systému Windows, pouze uživatelé databáze.) Připojovací řetězec musí jako počáteční katalog zadat obsaženou databázi.
Pro objekty zabezpečení Microsoft Entra vyžaduje syntaxe CREATE USER:
UserPrincipalName objektu Microsoft Entra pro uživatele Microsoft Entra.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
objekty zabezpečení serveru Microsoft Entra (přihlášení) zavádí vytváření uživatelů mapovaných na přihlášení Microsoft Entra ve virtuální databázi
master
. NapříkladCREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
Uživatelé a instanční objekty (aplikace) Microsoft Entra, kteří jsou členy více než 2048 skupin zabezpečení Microsoft Entra, se nepodporují pro přihlášení k databázím ve službě Azure SQL Database, Azure SQL Managed Instance nebo Azure Synapse.
DisplayName objektu Microsoft Entra pro skupiny Microsoft Entra a Aplikace Microsoft Entra. Pokud jste měli skupinu zabezpečení Nurses, použili byste:
CREATE USER [Nurses] FROM EXTERNAL PROVIDER;
Další informace naleznete v tématu Připojení ke službě SQL Database pomocí ověřování Microsoft Entra.
WITH PASSWORD = 'password'
platí pro: SQL Server 2012 (11.x) a novější, SQL Database.
Lze použít pouze v databázi s omezením. Určuje heslo pro uživatele, který se vytváří. Od SQL Serveru 2012 (11.x) se uložené informace o hesle počítají pomocí SHA-512 solného hesla.
BEZ PŘIHLÁŠENÍ
Určuje, že uživatel by neměl být mapován na existující přihlášení.
CERT_NAME CERTIFIKÁTU
platí pro: SQL Server 2008 (10.0.x) a novější, SQL Database, databáze SQL v Microsoft Fabric
Určuje certifikát, pro který se vytváří uživatel databáze.
ASYMETRICKÉ KLÍČOVÉ asym_key_name
platí pro: SQL Server 2008 (10.0.x) a novější, SQL Database, databáze SQL v Microsoft Fabric
Určuje asymetrický klíč, pro který se vytváří uživatel databáze.
DEFAULT_LANGUAGE = { NONE | <lcid> | <název jazyka> | <jazykové> }
platí pro: SQL Server 2012 (11.x) a novější, SQL Database
Určuje výchozí jazyk nového uživatele. Pokud je pro uživatele zadán výchozí jazyk a později se změní výchozí jazyk databáze, zůstane výchozí jazyk uživatele zadaný. Pokud není zadán žádný výchozí jazyk, výchozí jazyk pro uživatele bude výchozím jazykem databáze. Pokud není zadaný výchozí jazyk uživatele a později se změní výchozí jazyk databáze, výchozí jazyk uživatele se změní na nový výchozí jazyk databáze.
Důležitý
DEFAULT_LANGUAGE se používá pouze pro uživatele databáze s omezením.
SID = sid
platí pro: SQL Server 2012 (11.x) a novější a pro databázi SQL v Microsoft Fabric.
V SQL Serveru 2012 (11.x) a novějším platí jenom pro uživatele s hesly (ověřování SQL Serveru) v obsažené databázi. Určuje identifikátor SID nového uživatele databáze. Pokud tato možnost není vybraná, SQL Server automaticky přiřadí identifikátor SID. Pomocí parametru SID můžete vytvářet uživatele ve více databázích se stejnou identitou (SID). To je užitečné při vytváření uživatelů ve více databázích k přípravě na převzetí služeb při selhání AlwaysOn. Pokud chcete zjistit identifikátor SID uživatele, zadejte dotaz sys.database_principals.
V databázi SQL v Microsoft Fabric by sid
měl být platným ID zadaného objektu zabezpečení Microsoft Entra. Pokud je objekt zabezpečení uživatelem nebo skupinou, id by mělo být ID objektu Microsoft Entra uživatele nebo skupiny. Pokud je instančním objektem Microsoft Entra (aplikace nebo spravovaná identita), id by mělo být ID aplikace (nebo ID klienta). Zadané ID musí být binary(16)
hodnota. Databázový stroj neověřuje zadané ID v Microsoft Entra. Argument SID
musí být použit společně s TYPE
.
TYP = [ E | X ]
platí pro: databáze SQL v Microsoft Fabric.
Určuje typ objektu zabezpečení Microsoft Entra.
E
indikuje, že instanční objekt je uživatel nebo instanční objekt (aplikace nebo spravovaná identita).
X
indikuje, že objekt zabezpečení je skupina.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
platí pro: SQL Server 2016 (13.x) a novější, SQL Database.
Potlačí kontroly kryptografických metadat na serveru v operacích hromadného kopírování. To uživateli umožňuje hromadně kopírovat šifrovaná data mezi tabulkami nebo databázemi bez dešifrování dat. Výchozí hodnota je VYPNUTÁ.
Varování
Nesprávné použití této možnosti může vést k poškození dat. Další informace najdete v tématu Migrace citlivých dat chráněných funkcí Always Encrypted.
OD EXTERNÍho poskytovatele
platí pro: SQL Database, Azure SQL Managed Instance, DATABÁZE SQL v Microsoft Fabric
Určuje, že objekt zabezpečení je určený pro ověřování Microsoft Entra. SQL Server automaticky ověří zadaný hlavní název v Microsoft Entra.
Pokud je objekt zabezpečení vydávající příkaz CREATE USER
instančním objektem uživatele Microsoft Entra, musí být instanční objekt (nebo skupina objektu zabezpečení) v roli Directory Readers v Microsoft Entra.
Pokud je CREATE USER
instančním objektem ve službě SQL Database a Azure SQL Managed Instance instanční objekt, musí být identita databázového serveru nebo spravované instance v roli Directory Readers v Microsoft Entra.
V databázi SQL v Microsoft Fabric není FROM EXTERNAL PROVIDER
povolen, pokud je instančním objektem v Microsoft Entra instanční objekt, který vydává CREATE USER
. Instanční objekty musí používat TYPE
a SID
argumenty k vytvoření uživatelů pro objekty zabezpečení Microsoft Entra.
WITH OBJECT_ID = "objectid"
platí pro: SQL Database, Azure SQL Managed Instance, DATABÁZE SQL v Microsoft Fabric
Určuje ID objektu Microsoft Entra. Pokud je zadaný OBJECT_ID
, může být user_name alias definovaný uživatelem vytvořený z původního zobrazovaného názvu objektu zabezpečení s připojenou příponou. User_name musí být jedinečným názvem v zobrazení sys.database_principals
a dodržovat všechna ostatní omezení sysname
. Další informace o použití možnosti WITH OBJECT_ID
naleznete v tématu Přihlášení a uživatelé Microsoft Entra s neunique zobrazovanými jmény.
Poznámka
Pokud zobrazovaný název instančního objektu není duplicitní, měli byste použít výchozí CREATE LOGIN
nebo příkaz CREATE USER
. Rozšíření WITH OBJECT_ID
je řešení potíží s opravou položky implementované pro použití s neunique instančními objekty. Použití s jedinečným instančním objektem se nedoporučuje. Použití rozšíření WITH OBJECT_ID
pro instanční objekt bez přidání přípony se úspěšně spustí, ale nebude zřejmé, pro který instanční objekt se vytvořil přihlášení nebo uživatel. Doporučujeme vytvořit alias pomocí přípony k jednoznačné identifikaci instančního objektu. Rozšíření WITH OBJECT_ID
není podporováno pro SQL Server.
Poznámky
Pokud FOR LOGIN
vynecháte, nový uživatel databáze se namapuje na přihlášení k SQL Serveru se stejným názvem.
Výchozí schéma bude prvním schématem, které bude server prohledávat při překladu názvů objektů pro tohoto uživatele databáze. Pokud neurčíte jinak, výchozí schéma bude vlastníkem objektů vytvořených tímto uživatelem databáze.
Pokud má uživatel výchozí schéma, použije se toto výchozí schéma. Pokud uživatel nemá výchozí schéma, ale uživatel je členem skupiny, která má výchozí schéma, použije se výchozí schéma skupiny. Pokud uživatel nemá výchozí schéma a je členem více než jedné skupiny, bude výchozím schématem pro uživatele skupina Windows s nejnižšími principal_id a explicitně nastaveným výchozím schématem. (Jako upřednostňované schéma není možné explicitně vybrat jedno z dostupných výchozích schémat.) Pokud pro uživatele nelze určit žádné výchozí schéma, použije se schéma dbo.
DEFAULT_SCHEMA lze nastavit před vytvořením schématu, na které odkazuje.
DEFAULT_SCHEMA nelze zadat při vytváření uživatele mapovaného na certifikát nebo asymetrického klíče.
Hodnota DEFAULT_SCHEMA se ignoruje, pokud je uživatel členem pevné role serveru sysadmin. Všichni členové pevné role serveru sysadmin mají výchozí schéma dbo
.
Klauzule WITHOUT LOGIN vytvoří uživatele, který není namapován na přihlášení k SQL Serveru. Může se připojit k jiným databázím jako host. Oprávnění je možné přiřadit tomuto uživateli bez přihlášení a když se kontext zabezpečení změní na uživatele bez přihlášení, původní uživatelé obdrží oprávnění uživatele bez přihlášení. Viz příklad D. Vytvoření a použití uživatele bez přihlášení.
Znak zpětného lomítka (\) můžou obsahovat pouze uživatelé mapovaní na objekty zabezpečení systému Windows.
CREATE USER se nedá použít k vytvoření uživatele typu host, protože uživatel typu host již existuje v každé databázi. Uživatele typu host můžete povolit tím, že mu udělíte oprávnění CONNECT, jak je znázorněno na obrázku:
GRANT CONNECT TO guest;
GO
Informace o uživatelích databáze jsou viditelné v zobrazení katalogu sys.database_principals.
Použijte rozšíření syntaxe FROM EXTERNAL PROVIDER
k vytvoření přihlášení Microsoft Entra na úrovni serveru ve službě Azure SQL Database a azure SQL Managed Instance. Přihlášení Microsoft Entra umožňují namapovat objekty Microsoft Entra na úrovni databáze na přihlášení Microsoft Entra na úrovni serveru. K vytvoření uživatele Microsoft Entra z přihlášení Microsoft Entra použijte následující syntaxi:
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];
Při vytváření uživatele v databázi Azure SQL musí login_name odpovídat existujícímu přihlášení Microsoft Entra nebo jinak pomocí klauzule FROM EXTERNAL PROVIDER vytvoří pouze uživatele Microsoft Entra bez přihlášení do databáze master
. Tento příkaz například vytvoří uživatele s obsahem:
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
Souhrn syntaxe
Uživatelé na základě přihlášení v master
Následující seznam ukazuje možnou syntaxi pro uživatele na základě přihlášení. Výchozí možnosti schématu nejsou uvedené.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
CREATE USER SQLAUTHLOGIN
CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN
Uživatelé, kteří se ověřují v databázi
Následující seznam ukazuje možnou syntaxi pro uživatele, kteří je možné použít pouze v obsažené databázi. Vytvořené uživatele nebudou souviset s přihlášeními v hlavní databázi . Výchozí schéma a jazykové možnosti nejsou uvedené.
Důležitý
Tato syntaxe uděluje uživatelům přístup k databázi a také uděluje nový přístup k databázovému stroji.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'
Uživatelé založení na objektech zabezpečení systému Windows bez přihlášení v systémové databázi master
Následující seznam ukazuje možnou syntaxi pro uživatele, kteří mají přístup k databázovému stroji prostřednictvím skupiny Windows, ale nemají přihlášení k systémové databázi master
. Tuto syntaxi lze použít ve všech typech databází. Výchozí schéma a jazykové možnosti nejsou uvedené.
Tato syntaxe je podobná uživatelům na základě přihlášení v master
, ale tato kategorie uživatele nemá přihlášení v master
. Uživatel musí mít přístup k databázovému stroji prostřednictvím přihlášení ke skupině Systému Windows.
Tato syntaxe se podobá uživatelům databáze s omezením založeným na objektech zabezpečení systému Windows, ale tato kategorie uživatelů nezískne nový přístup k databázovému stroji.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
Uživatelé, kteří nemůžou ověřit
Následující seznam ukazuje možnou syntaxi pro uživatele, kteří se nemůžou přihlásit k SQL Serveru.
CREATE USER RIGHTSHOLDER WITHOUT LOGIN
CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey
Bezpečnost
Vytvoření uživatele uděluje přístup k databázi, ale automaticky neuděluje žádný přístup k objektům v databázi. Po vytvoření uživatele jsou běžnými akcemi přidání uživatelů do databázových rolí, které mají oprávnění k přístupu k databázovým objektům, nebo udělení oprávnění k objektu uživateli. Informace o návrhu systému oprávnění naleznete v tématu Začínáme s oprávněními databázového stroje.
Zvláštní aspekty pro databáze s omezením
Pokud se uživatel při připojování k databázi s omezením nepřihlašuje do databáze master
, musí připojovací řetězec obsahovat název obsažené databáze jako počáteční katalog. Parametr počátečního katalogu se vždy vyžaduje pro uživatele databáze s omezením s heslem.
V databázi s omezením pomáhá vytváření uživatelů oddělit databázi od instance databázového stroje, aby bylo možné databázi snadno přesunout do jiné instance SQL Serveru. Další informace naleznete v tématu Databáze s omezením a obsažené databáze uživatelé - vytvoření vaší databáze přenosné. Pokud chcete změnit uživatele databáze z uživatele na základě přihlášení ověřování SQL Serveru k uživateli databáze s omezením s heslem, přečtěte si sp_migrate_user_to_contained (Transact-SQL).
V databázi s omezením uživatelé nemusí mít v databázi master
přihlášení. Správci databázového stroje by měli pochopit, že přístup k obsažené databázi je možné udělit na úrovni databáze místo na úrovni databázového stroje. Další informace naleznete v tématu osvědčené postupy zabezpečení s databázemi s omezením.
Pokud ve službě Azure SQL Database používáte uživatele databáze s omezením, nakonfigurujte přístup pomocí pravidla brány firewall na úrovni databáze místo pravidla brány firewall na úrovni serveru. Další informace najdete v tématu
Pro SQL Server 2022 (16.x), SQL Database, Azure SQL Managed Instance a Azure Synapse Analytics obsahovaly uživatele databáze, SSMS podporuje vícefaktorové ověřování. Další informace naleznete v tématu Použití vícefaktorového ověřování Microsoft Entra.
Dovolení
Vyžaduje oprávnění ALTER ANY USER k databázi.
Oprávnění pro SQL Server 2022 a novější
Vyžaduje oprávnění CREATE USER k databázi.
Příklady
A. Vytvoření uživatele databáze na základě přihlášení k SQL Serveru
Následující příklad nejprve vytvoří přihlášení SQL Serveru s názvem AbolrousHazem
a pak vytvoří odpovídajícího uživatele databáze AbolrousHazem
v AdventureWorks2022
.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
Přejděte na uživatelskou databázi. Například v SQL Serveru použijte příkaz USE AdventureWorks2022
. Ve službě Azure Synapse Analytics a Platform Platform System (PDW) musíte vytvořit nové připojení k uživatelské databázi.
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
B. Vytvoření uživatele databáze s výchozím schématem
Následující příklad nejprve vytvoří přihlášení serveru s názvem WanidaBenshoof
s heslem a pak vytvoří odpovídající Wanida
uživatele databáze s výchozím schématem Marketing
.
CREATE LOGIN WanidaBenshoof
WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2022;
CREATE USER Wanida FOR LOGIN WanidaBenshoof
WITH DEFAULT_SCHEMA = Marketing;
GO
C. Vytvoření uživatele databáze z certifikátu
Následující příklad vytvoří uživatele databáze JinghaoLiu
z certifikátu CarnationProduction50
.
platí pro: SQL Server 2008 (10.0.x) a novější.
USE AdventureWorks2022;
CREATE CERTIFICATE CarnationProduction50
WITH SUBJECT = 'Carnation Production Facility Supervisors',
EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO
D. Vytvoření a použití uživatele bez přihlášení
Následující příklad vytvoří uživatele databáze CustomApp
, který se nenamapuje na přihlášení k SQL Serveru. Příklad pak udělí uživateli adventure-works\tengiz0
oprávnění k zosobnění CustomApp
uživatele.
USE AdventureWorks2022;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;
GO
Pokud chcete použít přihlašovací údaje CustomApp
, uživatel adventure-works\tengiz0
spustí následující příkaz.
EXECUTE AS USER = 'CustomApp' ;
GO
Pokud se chcete vrátit k adventure-works\tengiz0
přihlašovacích údajů, uživatel spustí následující příkaz.
REVERT ;
GO
E. Vytvoření uživatele databáze s omezením s heslem
Následující příklad vytvoří uživatele databáze s omezením s heslem. Tento příklad lze spustit pouze v databázi s omezením.
platí pro: SQL Server 2012 (11.x) a novější. Tento příklad funguje ve službě SQL Database, pokud DEFAULT_LANGUAGE odeberete.
USE AdventureWorks2022;
GO
CREATE USER Carlo
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. Vytvoření uživatele databáze s omezením pro přihlášení k doméně
Následující příklad vytvoří uživatele databáze s omezením pro přihlášení s názvem Fritz v doméně s názvem Contoso. Tento příklad lze spustit pouze v databázi s omezením.
platí pro: SQL Server 2012 (11.x) a novější.
USE AdventureWorks2022;
GO
CREATE USER [Contoso\Fritz] ;
GO
G. Vytvoření uživatele databáze s omezením s konkrétním identifikátorem SID
Následující příklad vytvoří ověřeného uživatele databáze SQL Serveru s názvem CarmenW. Tento příklad lze spustit pouze v databázi s omezením.
platí pro: SQL Server 2012 (11.x) a novější.
USE AdventureWorks2022;
GO
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. Vytvoření uživatele pro kopírování šifrovaných dat
Následující příklad vytvoří uživatele, který může kopírovat data chráněná funkcí Always Encrypted z jedné sady tabulek obsahující šifrované sloupce do jiné sady tabulek s šifrovanými sloupci (ve stejné nebo jiné databázi). Další informace najdete v tématu Migrace citlivých dat chráněných funkcí Always Encrypted.
platí pro: SQL Server 2016 (13.x) a novější, SQL Database.
CREATE USER [Chin]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
Já. Vytvoření uživatele Microsoft Entra z přihlášení Microsoft Entra v Azure SQL
Pokud chcete vytvořit uživatele Microsoft Entra z přihlášení Microsoft Entra, použijte následující syntaxi.
Přihlaste se ke svému logickému serveru v Azure nebo spravované instanci SQL pomocí přihlášení Microsoft Entra, které udělilo sysadmin
roli ve službě SQL Managed Instance nebo loginmanager
roli ve službě SQL Database. Následující skript T-SQL vytvoří bob@contoso.com
uživatele Microsoft Entra z přihlašovacího bob@contoso.com
. Toto přihlášení bylo vytvořeno v příkladu CREATE LOGIN.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO
Důležitý
Při vytváření USER z přihlášení Microsoft Entra zadejte user_name jako stejný login_name z LOGIN.
Vytvoření uživatele Microsoft Entra jako skupiny z přihlášení Microsoft Entra je podporováno.
CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];
GO
Uživatele Microsoft Entra můžete vytvořit také z přihlášení Microsoft Entra, které je skupinou.
CREATE USER [bob@contoso.com] FROM LOGIN [MS Entra group];
GO
J. Vytvoření uživatele databáze s omezením z objektu zabezpečení Microsoft Entra
Následující syntaxe vytvoří bob@contoso.com
uživatele Microsoft Entra v databázi bez přidruženého přihlášení v master
. Databázový stroj ověří, že zadaný uživatel existuje v microsoft Entra.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
K. Vytvoření uživatele databáze s omezením z instančního objektu Microsoft Entra bez ověření
platí pro: Databáze SQL v Microsoft Fabric
Příklady v této části vytvářejí uživatele databáze pro objekty zabezpečení Microsoft Entra bez ověřování hlavních názvů v Microsoft Entra.
Následující příklad T-SQL vytvoří uživatele databáze pro uživatele Microsoft Entra s názvem bob@contoso.com
. Nahraďte <unique identifier sid>
identifikátorem SID nového uživatele na ID objektu uživatele Microsoft Entra.
DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);
Následující příklad vytvoří uživatele databáze pro instanční objekt Microsoft Entra s názvem HRApp
. Nahraďte <unique identifier sid>
identifikátorem SID nového uživatele na ID klienta instančního objektu v Microsoft Entra.
DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);
Následující příklad vytvoří uživatele databáze pro skupinu Microsoft Entra s názvem HR
. Nahraďte <unique identifier sid>
identifikátorem SID nového uživatele na ID objektu skupiny.
DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);
Další kroky
Po vytvoření uživatele zvažte přidání uživatele do databázové role pomocí příkazu ALTER ROLE.
Můžete také chtít udělit oprávnění objektu roli, aby mohly přistupovat k tabulkám. Obecné informace o modelu zabezpečení SYSTÉMU SQL Server naleznete v tématu Oprávnění.
Související obsah
- vytvoření uživatele databáze
-
sys.database_principals (Transact-SQL) -
ALTER USER (Transact-SQL) - DROP USER (Transact-SQL)
-
CREATE LOGIN (Transact-SQL) -
EVENTDATA (Transact-SQL) - databáze s omezením
- připojení ke službě SQL Database pomocí ověřování Microsoft Entra
- začínáme s oprávněními databázového stroje