Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
sql database v Microsoft Fabric
Přidá uživatele do aktuální databáze. Následující seznam ukazuje 13 typů uživatelů spolu se vzorkem nejzákladnější syntaxe:
Note
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 služba Active Directory.
CREATE USER [Contoso\test];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í využívajícím autentizaci přes SQL Server.
CREATE USER Mary;Uživatel založený na přihlášení Microsoft Entra.
CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com]Note
instanční objekty serveru Microsoft Entra (přihlášení) jsou aktuálně ve verzi Public Preview pro Azure SQL Database.
Note
SQL databáze v Microsoft Fabric nepodporuje přihlášení ani uživatele na základě přihlášení.
Uživatelé, kteří se autentizují v databázi – Používejte uzavřené uživatele, aby byla databáze přenosnější.
Always allowed in Azure SQL Database. 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\test];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 [test@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\test];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\test];
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í. Nejde se přihlásit, ale dá se 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 Contoso50; - 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 Contoso09;
Syntax
Syntaxe pro SQL Server, Azure SQL Database a Spravovanou instanci Azure SQL
-- 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 ]
[;]
Syntax for SQL database in Microsoft Fabric a Azure SQL Database
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 }
Arguments
user_name
Určuje jméno, podle kterého je uživatel identifikován uvnitř této databáze.
LOGIN 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 SQL dávce, Azure SQL Database podporuje klauzuli WITHLOGIN. Pokud příkaz CREATE USER není jediným příkazem v SQL batch nebo běží v dynamickém SQL, klauzule WITH LOGIN není podporována.
S DEFAULT_SCHEMA = schema_name
Určuje první schéma prohledáné serverem 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 služba Active Directory jsou omezeni na názvy kratší než 21 znaků.
'Microsoft_Entra_principal'
Platí na: SQL Server 2022 (16.x) a novější verze, SQL Database, SQL Managed Instance, Azure Synapse Analytics, SQL databázi 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 principals Microsoft Entra syntaxe CREATE USER vyžaduje:
UserPrincipalName objektu Microsoft Entra pro uživatele Microsoft Entra.
CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
Instanční objekty serveru Microsoft Entra (přihlášení) zavádí vytváření uživatelů mapovaných na přihlášení Microsoft Entra v
masterdatabázi. NapříkladCREATE USER [test@contoso.com] FROM LOGIN [test@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.
Další informace o ověřování Microsoft Entra na SQL Serveru naleznete v kurzu : Nastavení ověřování Microsoft Entra pro SQL Server s povolenou službou Azure Arc.
S HESLEM = 'heslo'
Platí na: SQL Server 2012 (11.x) a novější verze, SQL Database.
Lze použít pouze v databázi s omezením. Určuje heslo pro uživatele, který se vytváří.
Od SQL Server 2012 (11.x) používaly SQL Server a Azure SQL Database hash SHA-512 kombinovaný s 32bitovou náhodnou a unikátní solí. Tato metoda znepřístupnil útočníkům statisticky neproveditelná hesla.
SQL Server 2025 (17.x) zavádí algoritmus iterated hash, RFC2898, označovaný také jako funkce odvození klíče založené na heslech (PBKDF). Tento algoritmus stále používá algoritmus SHA-512, ale několikrát zatřiďuje heslo (100 000 iterací), což výrazně zpomaluje útoky hrubou silou. Tato změna vylepšuje ochranu heslem v reakci na vyvíjející se bezpečnostní hrozby a pomáhá zákazníkům dodržovat pokyny NIST SP 800-63b. Toto vylepšení zabezpečení používá silnější algoritmus hash, který může mírně zvýšit dobu přihlášení pro přihlášení k ověřování SQL. Dopad je obecně nižší v prostředích s sdružováním připojení, ale může být patrnější ve scénářích bez sdružování nebo v případě, že se latence přihlášení pečlivě monitoruje.
BEZ LOGIN
Určuje, že uživatel by neměl být mapován na existující přihlášení.
CERTIFICATE cert_name
Platí na: SQL Server 2008 (10.0.x) a novější verze, SQL databázi, SQL databázi v Microsoft Fabric
Určuje certifikát, pro který se vytváří uživatel databáze.
ASYMMETRIC KEY asym_key_name
Platí na: SQL Server 2008 (10.0.x) a novější verze, SQL databázi, SQL databázi v Microsoft Fabric
Určuje asymetrický klíč, pro který se vytváří uživatel databáze.
DEFAULT_LANGUAGE = { NONE | <lcid> | <název jazyka> | <jazykové> }
Platí na: SQL Server 2012 (11.x) a novější verze, SQL Database
Určuje výchozí jazyk nového uživatele. Pokud určíte výchozí jazyk pro uživatele a později změníte výchozí jazyk databáze, výchozí jazyk uživatele zůstává tak, jak je specifikován. Pokud nespecifikujete výchozí jazyk, uživatel získá výchozí jazyk databáze. Pokud uživateli neurčíte výchozí jazyk a později změníte výchozí jazyk databáze, výchozí jazyk uživatele se změní na nový výchozí jazyk databáze.
Important
DEFAULT_LANGUAGE se používá pouze pro uživatele databáze s omezením.
SID = sid
Platí na: SQL Server 2012 (11.x) a pozdější verze, a také na SQL databázi v Microsoft Fabric.
V SQL Server 2012 (11.x) a novějších verzích platí pouze pro uživatele s hesly (autentizace SQL Server) v uzavřené databázi. Určuje identifikátor SID nového uživatele databáze. Pokud tuto možnost nevyberete, SQL Server automaticky přiřadí SID. Pomocí parametru SID můžete vytvářet uživatele ve více databázích se stejnou identitou (SID). Tato funkce je užitečná při vytváření uživatelů ve více databázích pro přípravu na Always On failover. Pro určení SID uživatele se dotazujte sys.database_principalsna .
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 principal uživatelem nebo skupinou, mělo by být ID Microsoft Entra objektu uživatele nebo skupiny. Pokud je principal Microsoft Entra principal služby (aplikace nebo spravovaná identita), mělo by 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. Pokud použijete SID argument, musíte zahrnout TYPE.
TYPE = [ E | X ]
Platí pro: Databáze SQL v Microsoft Fabric a Azure SQL Database.
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 | VYPNUTO ]
Platí na: SQL Server 2016 (13.x) a novější verze, 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Á.
Warning
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í na: SQL Server 2022 (16.x) a novější verze, SQL Database, Azure SQL Managed Instance, SQL databázi 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 hlavní uživatel CREATE USER Microsoft Entra uživatelským principem, musí být principal nebo jeho skupina 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 SQL databázi v Microsoft Fabric nelze použítFROM EXTERNAL PROVIDER, pokud je hlavní vydavatel CREATE USER principal služby v Microsoft Entra. 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í na: SQL Server 2025 (17.x) a pozdější verze, SQL Database, Azure SQL Managed Instance, SQL databázi v Microsoft Fabric
Určuje ID objektu Microsoft Entra. Pokud zadáte , OBJECT_IDmůže user_name být uživatelsky definovaný alias vytvořený z původního hlavního zobrazovacího jména s připonou k dispozici. User_name musí být jedinečným názvem v zobrazení sys.database_principals a dodržovat všechna ostatní omezení sysname. Pro více informací o použití této WITH OBJECT_ID možnosti viz Microsoft Entra přihlášení a uživatelé s neunikátními zobrazovanými jmény.
Note
Od SQL Server 2025 (17.x) je tato WITH OBJECT_ID možnost podporována pro přihlášení Microsoft Entra a uživatele s unikátními zobrazovacími jmény.
Pokud zobrazení principu služby není duplicitní, použijte výchozí CREATE LOGINCREATE USER nebo příkaz. Rozšíření WITH OBJECT_ID je řešení potíží s opravou položky implementované pro použití s neunique instančními objekty. Nedoporučuje se používat s jedinečnou aplikační identitou.
WITH OBJECT_ID Použití rozšíření pro instanční objekt bez úspěšného přidání přípony, ale není zřejmé, pro který instanční objekt se vytvořil přihlášení nebo uživatel. Doporučuje se vytvořit alias pomocí přípony pro jednoznačnou identifikaci služebního principála.
Remarks
Pokud vynecháte FOR LOGIN, nový uživatel databáze se mapuje na přihlašovací adresu SQL Server se stejným názvem.
Výchozí schéma je první schéma, které server vyhledá při řešení jmen objektů pro tohoto uživatele databáze. Pokud není uvedeno jinak, výchozí schéma je vlastníkem objektů vytvořených tímto uživatelem databáze.
Pokud má uživatel výchozí schéma, server použije toto výchozí schéma. Pokud uživatel nemá výchozí schéma, ale je členem skupiny, která má výchozí schéma, server používá výchozí schéma skupiny. Pokud uživatel nemá výchozí schéma a patří do více skupin, server používá nakonfigurované výchozí schéma skupiny Windows s nejnižším principal_id ze skupin, které mají explicitně nastavené výchozí schéma. Nemůžete explicitně vybrat jedno z dostupných výchozích schémat jako preferované schéma. Pokud server nemůže určit výchozí schéma pro uživatele, použije schéma dbo .
Můžete nastavit DEFAULT_SCHEMA před vytvořením schématu, na které to odkazuje.
Nemůžete specifikovat DEFAULT_SCHEMA při vytváření uživatele přiřazeného k certifikátu nebo asymetrickému klíči.
Server ignoruje hodnotu DEFAULT_SCHEMA , zda je uživatel členem pevné sysadmin role serveru. Všichni členové sysadmin pevné serverové role mají výchozí schéma .dbo
Tato WITHOUT LOGIN klauzule vytváří uživatele, který není mapován na přihlášení ověřené SQL. Může se připojit k jiným databázím jako host. Tomuto uživateli můžete přiřadit oprávnění i bez přihlášení. Když se bezpečnostní kontext změní na uživatele bez přihlášení, původní uživatel obdrží oprávnění uživatele bez přihlášení. Pro příklad viz D. Vytvoření a používání 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.
Nemůžete použít k CREATE USER vytvoření hostujícího uživatele, protože hostující uživatel už existuje v každé databázi. Hostujícího uživatele můžete povolit udělením CONNECT oprávnění, jak je znázorněno:
GRANT CONNECT TO guest;
GO
Informace o uživatelích databáze si můžete prohlédnout v zobrazení sys.database_principals katalogu.
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. Použitím přihlášení přes Microsoft Entra můžete mapovat principy Microsoft Entra na úrovni databáze na serverové Microsoft Entra přihlášení. Pro vytvoření uživatele Microsoft Entra z přihlášení do Microsoft Entra použijte následující syntaxi:
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];
Když uživatele vytvoříte v databázi Azure SQL, login_name musí odpovídat existujícímu přihlášení Microsoft Entra. Jinak použití klauzule FROM EXTERNAL PROVIDER vytvoří pouze uživatele Microsoft Entra bez přihlášení do databázemaster. Například následující příkaz vytvoří uzavřeného uživatele:
CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
Shrnutí 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\WindowsUserTest]CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTestCREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTestCREATE USER [Domain1\WindowsGroupManagers]CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]CREATE USER SQLAUTHLOGINCREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGINCREATE 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é.
Important
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\WindowsUserTest]CREATE USER [Domain1\WindowsGroupManagers]CREATE USER Test WITH PASSWORD = '<strong password>'
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\WindowsUserTest]CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTestCREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTestCREATE 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 LOGINCREATE USER CERTUSER FOR CERTIFICATE SpecialCertCREATE USER CERTUSER FROM CERTIFICATE SpecialCertCREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKeyCREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey
Zabezpečení
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í úvahy pro uzavřené databáze
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é. Chcete-li změnit uživatele databáze z uživatele založeného na přihlášení ověřeném SQL na uživatele s obsahem databáze s heslem, viz 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 uživatele databáze obsahující SQL Server 2022 (16.x), Azure SQL Database, Azure SQL Managed Instance a Azure Synapse Analytics podporuje vícefaktorovou autentizaci. Další informace naleznete v tématu Použití vícefaktorového ověřování Microsoft Entra.
Permissions
Vyžaduje ALTER JAKÉKOLI USER povolení v databázi.
Oprávnění pro verze SQL Server 2022 a novější
Vyžaduje CREATE USER oprávnění k databázi.
Examples
A. Vytvořte uživatele databáze na základě přihlášení přes SQL Server
Následující příklad nejprve vytvoří přihlašovací číslo do SQL Server pojmenovaného test v databázi master a poté vytvoří odpovídajícího uživatele test databáze v AdventureWorks2025.
--Connect to the master database
CREATE LOGIN test
WITH PASSWORD = '<strong password>';
Přejděte na uživatelskou databázi. Například v SQL Serveru použijte příkaz USE [AdventureWorks2022]. V Azure SQL Database není tento USE příkaz dostupný. Místo toho se připojte přímo k zamýšlené databázi a spusťte zbytek vzorku kódu. Tento příklad založený na přihlášení se nevztahuje na SQL databázi v Microsoft Fabric, která nepodporuje přihlášení ani uživatele na základě přihlášení.
--Connect to a user database
CREATE USER test FOR LOGIN test;
GO
B. Vytvořte uživatele databáze s výchozím schématem
Následující příklad nejprve vytvoří přihlášení k serveru s heslem testlogin , které zadáte, a poté vytvoří odpovídajícího databázového uživatele testuser, s výchozím schématem Marketing.
--Connect to the master database
CREATE LOGIN testlogin
WITH PASSWORD = '<strong password>';
Přejděte na uživatelskou databázi. Například v SQL Serveru použijte příkaz USE [AdventureWorks2022]. V Azure SQL Database a SQL databázi v Microsoft Fabric není toto USE prohlášení dostupné. Místo toho se připojte přímo k zamýšlené databázi a spusťte zbytek vzorku kódu.
--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
WITH DEFAULT_SCHEMA = Marketing;
C. Vytvořte uživatele databáze z certifikátu
Následující příklad vytvoří uživatele databáze test z certifikátu Contoso_Cert. Další informace najdete v tématu CREATE CERTIFICATE (Transact-SQL).
USE AdventureWorks2022;
CREATE CERTIFICATE Contoso_Cert
ENCRYPTION BY PASSWORD = '<strong password>'
WITH SUBJECT = 'Contoso Facility Supervisors',
EXPIRY_DATE = '11/11/2011';
GO
CREATE USER test FOR CERTIFICATE Contoso_Cert;
GO
D. Vytvořte a používejte 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\test oprávnění k zosobnění CustomApp uživatele.
USE AdventureWorks2022;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\test] ;
GO
Pokud chcete použít přihlašovací údaje CustomApp, uživatel adventure-works\test spustí následující příkaz.
EXECUTE AS USER = 'CustomApp' ;
GO
Pokud se chcete vrátit k adventure-works\test přihlašovacích údajů, uživatel spustí následující příkaz.
REVERT ;
GO
E. Vytvořte uzavřeného databázového uživatele s heslem
Následující příklad vytvoří uživatele databáze s omezením s heslem. Tento příklad lze provést pouze v uzavřené databázi.
Tento příklad funguje v SQL Database, pokud odstraníte DEFAULT_LANGUAGE.
USE AdventureWorks2022;
GO
CREATE USER test
WITH PASSWORD='<password>'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. Vytvořte uzavřeného databázového uživatele pro přihlášení do domény
Následující příklad vytváří uzavřeného databázového uživatele pro přihlášení pojmenované test v doméně nazvané Contoso. Tento příklad lze provést pouze v uzavřené databázi.
USE AdventureWorks2022;
GO
CREATE USER [Contoso\test] ;
GO
G. Vytvořte uživatele uzavřené databáze se specifickým SID
Následující příklad vytváří ověřený SQL Server uzavřený databázový uživatel s názvem TestUser. Tento příklad lze provést pouze v uzavřené databázi.
USE AdventureWorks2022;
GO
CREATE USER TestUser WITH PASSWORD = '<strong password>'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. Vytvořte 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í na: SQL Server 2016 (13.x) a novější verze, SQL Database.
CREATE USER [test]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
I. Vytvořte uživatele Microsoft Entra z přihlášení Microsoft Entra v Azure SQL Database a Azure SQL Managed Instance
Pokud chcete vytvořit uživatele Microsoft Entra z přihlášení Microsoft Entra, použijte následující syntaxi.
Přihlaste se na logický server Azure SQL Database nebo SQL Managed Instance pomocí přihlášení přes Microsoft Entra. Použijte přihlášení správce serveru nebo přihlašovací údaje, které jsou členem loginmanager role v SQL Database, nebo jsou této roli přiděleny sysadmin v SQL Managed Instance.
Následující skript T-SQL vytvoří test@contoso.comuživatele Microsoft Entra z přihlašovacího test@contoso.com. Toto přihlášení bylo vytvořeno v tomto příkladu CREATE LOGIN .
CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];
GO
Important
Při vytváření USER přihlášení z 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 [test@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ří test@contoso.comuž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 [test@contoso.com] FROM EXTERNAL PROVIDER;
GO
V SQL databázi v Microsoft Fabric nelze použítFROM EXTERNAL PROVIDER, pokud je hlavní vydavatel CREATE USER principal služby v Microsoft Entra.
K. Vytvoření uživatele databáze s omezením z instančního objektu Microsoft Entra bez ověření
Platí na: SQL databázi v Microsoft Fabric a Azure SQL Database
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 test@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 = 'test@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.
Note
Při zadávání Microsoft Entra principal služby, User-Assigned Managed Identity (UAMI) nebo System-Assigned Managed Identity (SAMI) použijte ID klienta, nikoli ID objektu.
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 @principal_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 [@principal_name] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);
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)
- obsahové databáze
- Ověřování Microsoft Entra pro Azure SQL
- Začínáme s oprávněními databázového stroje
- ALTER ROLE (Transact-SQL)
- GRANT oprávnění objektu (Transact-SQL)
- Oprávnění (Databázový stroj)