CREATE USER (Transact-SQL)

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-database in Microsoft Fabric

Hiermee voegt u een gebruiker toe aan de huidige database. De volgende lijst toont de 13 typen gebruikers samen met een voorbeeld van de meest basale syntaxis:

Note

Hoewel Microsoft Entra ID de nieuwe naam is voor Azure Active Directory (Azure AD), om te voorkomen dat bestaande omgevingen worden onderbroken, blijft Azure AD in sommige hardcoded elementen, zoals ui-velden, verbindingsproviders, foutcodes en cmdlets. In dit artikel zijn de twee namen uitwisselbaar.

gebruikers op basis van aanmeldingen in master

  • Gebruiker op basis van een aanmelding op basis van een Windows Active Directory-account. CREATE USER [Contoso\test];

  • Gebruiker op basis van een aanmelding op basis van een Windows-groep. CREATE USER [Contoso\Sales];

  • Gebruiker gebaseerd op een login die SQL Server-authenticatie gebruikt. CREATE USER Mary;

  • Gebruiker op basis van een Microsoft Entra-aanmelding. CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com]

    Note

    Microsoft Entra-server-principals (aanmeldingen) momenteel in openbare preview zijn voor Azure SQL Database.

    Note

    De SQL-database in Microsoft Fabric ondersteunt geen inloggegevens of gebruikers op basis van inloggegevens.

Gebruikers die zich authenticeren bij de database - Gebruik ingebouwde gebruikers om je database draagbaarder te maken.
Altijd toegestaan in Azure SQL Database. Alleen toegestaan in een ingesloten database in SQL Server.

  • Gebruiker op basis van een Windows-gebruiker die geen aanmelding heeft. CREATE USER [Contoso\test];

  • Gebruiker op basis van een Windows-groep die geen aanmelding heeft. CREATE USER [Contoso\Sales];

  • Gebruiker in SQL Database of Azure Synapse Analytics op basis van een Microsoft Entra-gebruiker. CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;

  • Ingesloten databasegebruiker met wachtwoord. (Niet beschikbaar in Azure Synapse Analytics.) CREATE USER Mary WITH PASSWORD = '********';

gebruikers op basis van Windows-principals die verbinding maken via aanmeldingen van Windows-groepen

  • Gebruiker op basis van een Windows-gebruiker die geen aanmelding heeft, maar verbinding kan maken met de database-engine via lidmaatschap van een Windows-groep. CREATE USER [Contoso\test];

  • Gebruiker op basis van een Windows-groep die geen aanmelding heeft, maar verbinding kan maken met de database-engine via lidmaatschap van een andere Windows-groep. CREATE USER [Contoso\test];

gebruikers die niet kunnen verifiëren. Deze gebruikers kunnen zich niet aanmelden bij SQL Server of SQL Database.

  • Gebruiker zonder aanmelding. U kunt zich niet aanmelden, maar u kunt wel machtigingen verlenen. CREATE USER CustomApp WITHOUT LOGIN;
  • Gebruiker op basis van een certificaat. U kunt zich niet aanmelden, maar u kunt wel machtigingen krijgen en modules ondertekenen. CREATE USER TestProcess FOR CERTIFICATE Contoso50;
  • Gebruiker op basis van een asymmetrische sleutel. U kunt zich niet aanmelden, maar u kunt wel machtigingen krijgen en modules ondertekenen. CREATE User TestProcess FROM ASYMMETRIC KEY Contoso09;

Transact-SQL syntaxisconventies

Syntax

Syntaxis voor SQL Server, Azure SQL Database en 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 ] ]

Syntaxis voor 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 ]
[;]

Syntaxis voor SQL-database in Microsoft Fabric en 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

Hiermee geeft u de naam op waarmee de gebruiker wordt geïdentificeerd in deze database. user_name is een sysname. Het mag maximaal 128 tekens lang zijn. Wanneer u een gebruiker maakt op basis van een Windows-principal, wordt de windows-principalnaam de gebruikersnaam, tenzij een andere gebruikersnaam is opgegeven.

LOGIN login_name

Hiermee geeft u de aanmelding op waarvoor de databasegebruiker wordt gemaakt. login_name moet een geldige aanmelding op de server zijn. Dit kan een aanmelding zijn op basis van een Windows-principal (gebruiker of groep), een aanmelding met behulp van SQL Server-verificatie of een aanmelding met behulp van een Microsoft Entra-principal (gebruiker, groep of toepassing). Wanneer deze SQL Server-aanmelding de database invoert, krijgt deze de naam en id van de databasegebruiker die wordt gemaakt. Wanneer u een aanmelding maakt die is toegewezen vanuit een Windows-principal, gebruikt u de indeling [<domainName>\<loginName>]. Zie Syntaxisoverzichtvoor voorbeelden.

Als de CREATE USER instructie de enige instructie in een SQL-batch is, ondersteunt Azure SQL Database de WITH-clausuleLOGIN. Als de CREATE USER instructie niet de enige is in een SQL-batch of draait in dynamische SQL, wordt de WITH-clausule LOGIN niet ondersteund.

MET DEFAULT_SCHEMA = schema_name

Hiermee geeft u het eerste schema dat door de server wordt doorzocht wanneer de namen van objecten voor deze databasegebruiker worden omgezet.

'windows_principal'

Hiermee geeft u de Windows-principal op waarvoor de databasegebruiker wordt gemaakt. De windows_principal kan een Windows-gebruiker of een Windows-groep zijn. De gebruiker wordt gemaakt, zelfs als de windows_principal geen aanmelding heeft. Wanneer u verbinding maakt met SQL Server en de windows_principal geen aanmelding heeft, moet de Windows-principal worden geverifieerd bij de database-engine via lidmaatschap van een Windows-groep met een aanmelding of moet de verbindingsreeks de ingesloten database opgeven als de eerste catalogus. Wanneer u een gebruiker maakt op basis van een Windows-principal, gebruikt u de indeling [<domainName>\<loginName>]. Zie Syntaxisoverzichtvoor voorbeelden. Gebruikers op basis van Active Directory-gebruikers zijn beperkt tot namen van minder dan 21 tekens.

'Microsoft_Entra_principal'

Van toepassing op: SQL Server 2022 (16.x) en latere versies, SQL Database, SQL Managed Instance, Azure Synapse Analytics, SQL-database in Microsoft Fabric

Hiermee geeft u de Microsoft Entra-principal op waarvoor de databasegebruiker wordt gemaakt. De Microsoft_Entra_principal kan een Microsoft Entra-gebruiker, een Microsoft Entra-groep of een Microsoft Entra-toepassing zijn. (Microsoft Entra-gebruikers kunnen geen aanmeldingen voor Windows-verificatie hebben in SQL Database; alleen databasegebruikers.) De verbindingsreeks moet de ingesloten database opgeven als de eerste catalogus.

Voor Microsoft Entra-principes vereist de CREATE USER syntaxis:

  • UserPrincipalName van het Microsoft Entra-object voor Microsoft Entra-gebruikers.

    • CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
    • CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
  • Microsoft Entra-server-principals (aanmeldingen) introduceert het maken van gebruikers die zijn toegewezen aan Microsoft Entra-aanmeldingen in de master database. Bijvoorbeeld CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];

  • Microsoft Entra-gebruikers en service-principals (toepassingen) die lid zijn van meer dan 2048 Microsoft Entra-beveiligingsgroepen, worden niet ondersteund om u aan te melden bij databases in Azure SQL Database, Azure SQL Managed Instance of Azure Synapse.

  • DisplayName van Microsoft Entra-object voor Microsoft Entra-groepen en Microsoft Entra-toepassingen. Als u de Verpleegsters beveiligingsgroep had, zou u het volgende gebruiken:

    • CREATE USER [Nurses] FROM EXTERNAL PROVIDER;

Zie Verbinding maken met SQL Database met behulp van Microsoft Entra-verificatievoor meer informatie.

Zie zelfstudie: Microsoft Entra-verificatie instellen voor SQL Server die is ingeschakeld door Azure Arc voor meer informatie over Microsoft Entra-verificatie in SQL Server.

MET WACHTWOORD = 'wachtwoord'

Van toepassing op: SQL Server 2012 (11.x) en latere versies, SQL Database.

Kan alleen worden gebruikt in een ingesloten database. Hiermee geeft u het wachtwoord op voor de gebruiker die wordt gemaakt.

Vanaf SQL Server 2012 (11.x) gebruikten SQL Server en Azure SQL Database een SHA-512 hash gecombineerd met een 32-bits willekeurige en unieke salt. Deze methode maakte het statistisch onfeilbaar voor aanvallers om wachtwoorden te afleiden.

SQL Server 2025 (17.x) introduceert een iterated hash-algoritme, RFC2898, ook wel bekend als een functie op basis van sleutels (PBKDF). Dit algoritme gebruikt nog steeds SHA-512, maar hashes het wachtwoord meerdere keren (100.000 iteraties), waardoor beveiligingsaanvallen aanzienlijk worden vertraagd. Deze wijziging verbetert de wachtwoordbeveiliging als reactie op veranderende beveiligingsrisico's en helpt klanten te voldoen aan de NIST SP 800-63b-richtlijnen. Deze beveiligingsverbetering maakt gebruik van een sterker hashing-algoritme, waardoor de aanmeldingstijd voor AANMELDINGen met SQL-verificatie enigszins kan worden verhoogd. De impact is over het algemeen lager in omgevingen met verbindingspooling, maar is mogelijk duidelijker in scenario's zonder pooling of waar de aanmeldingslatentie nauw wordt bewaakt.

ZONDER LOGIN

Hiermee geeft u op dat de gebruiker niet moet worden toegewezen aan een bestaande aanmelding.

CERTIFICATE cert_name

Van toepassing op: SQL Server 2008 (10.0.x) en latere versies, SQL Database, SQL-database in Microsoft Fabric

Hiermee geeft u het certificaat waarvoor de databasegebruiker wordt gemaakt.

ASYMMETRIC KEY asym_key_name

Van toepassing op: SQL Server 2008 (10.0.x) en latere versies, SQL Database, SQL-database in Microsoft Fabric

Hiermee geeft u de asymmetrische sleutel op waarvoor de databasegebruiker wordt gemaakt.

DEFAULT_LANGUAGE = { NONE | <lcid> | <taalnaam> | <language salias> }

Van toepassing op: SQL Server 2012 (11.x) en latere versies, SQL Database

Hiermee geeft u de standaardtaal voor de nieuwe gebruiker. Als je een standaardtaal voor de gebruiker specificeert en later de standaardtaal van de database verandert, blijft de standaardtaal van de gebruiker zoals gespecificeerd. Als je geen standaardtaal specificeert, krijgt de gebruiker de standaardtaal van de database. Als je geen standaardtaal voor de gebruiker specificeert en later de standaardtaal van de database verandert, verandert de standaardtaal van de gebruiker in de nieuwe standaardtaal voor de database.

Important

DEFAULT_LANGUAGE wordt alleen gebruikt voor een ingesloten databasegebruiker.

SID = sid

Van toepassing op: SQL Server 2012 (11.x) en latere versies, en op SQL-databases in Microsoft Fabric.

In SQL Server 2012 (11.x) en latere versies geldt alleen voor gebruikers met wachtwoorden (SQL Server-authenticatie) in een ingebouwde database. Hiermee geeft u de SID van de nieuwe databasegebruiker. Als je deze optie niet selecteert, wijst SQL Server automatisch een SID toe. Gebruik de SID-parameter om gebruikers te maken in meerdere databases met dezelfde identiteit (SID). Deze functie is handig bij het aanmaken van gebruikers in meerdere databases ter voorbereiding op Always On failover. Om de SID van een gebruiker te bepalen, zoek sys.database_principals.

In SQL Database in Microsoft Fabric moet sid een geldige id zijn van de opgegeven Microsoft Entra-principal. Als de principal een gebruiker of groep is, moet de ID een Microsoft Entra-object-ID van de gebruiker of groep zijn. Als de Microsoft Entra principal een service principal is (een applicatie of een beheerde identiteit), moet de ID een applicatie-ID of een client ID zijn. De opgegeven id moet een binary(16) waarde zijn. De database-engine valideert de opgegeven id niet in Microsoft Entra. Als je het SID argument gebruikt, moet je ook .TYPE

TYPE = [ E | X ]

Van toepassing op: SQL-database in Microsoft Fabric en Azure SQL Database.

Hiermee geeft u het type van een Microsoft Entra-principal op. E geeft aan dat de principal een gebruiker of een service-principal is (een toepassing of een beheerde identiteit). X geeft aan dat de principal een groep is.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ AAN | UIT ]

Van toepassing op: SQL Server 2016 (13.x) en latere versies, SQL Database.

Onderdrukt cryptografische metagegevenscontroles op de server in bulkkopiebewerkingen. Hierdoor kan de gebruiker versleutelde gegevens bulksgewijs kopiëren tussen tabellen of databases, zonder de gegevens te ontsleutelen. De standaardwaarde is UITGESCHAKELD.

Warning

Onjuist gebruik van deze optie kan leiden tot beschadiging van gegevens. Zie Gevoelige gegevens migreren die zijn beveiligd door Always Encryptedvoor meer informatie.

VAN EXTERNE AANBIEDER

Van toepassing op: SQL Server 2022 (16.x) en latere versies, SQL Database, Azure SQL Managed Instance, SQL database in Microsoft Fabric

Hiermee geeft u op dat de principal voor Microsoft Entra-verificatie is. SQL Server valideert automatisch de opgegeven principal-naam in Microsoft Entra.

Als de opdrachtgever die de CREATE USER verklaring uitgeeft een Microsoft Entra-gebruikersprincipal is, moet de principal of de groep van de principal de rol van Directory Readers in Microsoft Entra vervullen.

Als in SQL Database en Azure SQL Managed Instance de principal die de CREATE USER-instructie uitgeeft een service-principal is, moet de identiteit van de databaseserver of het beheerde exemplaar de rol Directory Readers hebben in Microsoft Entra.

In een SQL-database in Microsoft Fabric kun je niet gebruiken FROM EXTERNAL PROVIDER als een principal die uitgeeft CREATE USER een service principal is in Microsoft Entra. Service-principals moeten TYPE en SID argumenten gebruiken om gebruikers te maken voor Microsoft Entra-principals.

WITH OBJECT_ID = objectid

Van toepassing op: SQL Server 2025 (17.x) en latere versies, SQL Database, Azure SQL Managed Instance, SQL-database in Microsoft Fabric

Hiermee geeft u de Microsoft Entra Object ID. Als je de specificeert OBJECT_ID, kan het user_name een door de gebruiker gedefinieerde alias zijn gevormd uit de oorspronkelijke hoofdnaam met een achtervoegsel erbij. De user_name moet een unieke naam zijn in de sys.database_principals weergave en moet voldoen aan alle andere sysname beperkingen. Voor meer informatie over het gebruik van de WITH OBJECT_ID optie, zie Microsoft Entra-logins en gebruikers met niet-unieke weergavenamen.

Note

Vanaf SQL Server 2025 (17.x) wordt de WITH OBJECT_ID optie ondersteund voor Microsoft Entra-inloggegevens en gebruikers met unieke weergavenamen.

Als de weergavenaam van de service principal geen duplicaat is, gebruik dan de default CREATE LOGIN of CREATE USER statement. De WITH OBJECT_ID-extensie is een herstelitem voor probleemoplossing dat is geïmplementeerd voor gebruik met niet-unique service-principals. Het gebruik ervan met een unieke service-principal wordt niet aanbevolen. Het gebruik van de WITH OBJECT_ID extensie voor een service-principal zonder een achtervoegsel toe te voegen, wordt uitgevoerd, maar het is niet duidelijk voor welke service-principal de aanmelding of gebruiker is gemaakt. Het wordt aanbevolen om een alias te maken door een achtervoegsel te gebruiken om de dienstprincipal uniek te identificeren.

Remarks

Als je FOR LOGIN, wordt de nieuwe databasegebruiker gekoppeld aan de SQL Server-login met dezelfde naam.

Het standaardschema is het eerste schema waarnaar de server zoekt wanneer hij de namen van objecten voor deze databasegebruiker oplost. Tenzij anders opgegeven, is het standaardschema de eigenaar van objecten die door deze databasegebruiker zijn gemaakt.

Als de gebruiker een standaardschema heeft, gebruikt de server dat standaardschema. Als de gebruiker geen standaardschema heeft maar lid is van een groep met een standaardschema, gebruikt de server het standaardschema van de groep. Als de gebruiker geen standaardschema heeft en tot meerdere groepen behoort, gebruikt de server het geconfigureerde standaardschema van de Windows-groep met de laagste principal_id van de groepen die een expliciet ingesteld standaardschema hebben. Je kunt niet expliciet een van de beschikbare standaardschema's als voorkeursschema selecteren. Als de server geen standaardschema voor een gebruiker kan bepalen, gebruikt hij het dbo schema.

Je kunt instellen DEFAULT_SCHEMA voordat je het schema aanmaakt waar het naar verwijst.

Je kunt niet specificeren DEFAULT_SCHEMA wanneer je een gebruiker aanmaakt die aan een certificaat of een asymmetrische sleutel is gekoppeld.

De server negeert de waarde van DEFAULT_SCHEMA als de gebruiker lid is van de sysadmin vaste serverrol. Alle leden van de sysadmin vaste serverrol hebben een standaardschema van dbo.

De WITHOUT LOGIN clausule maakt een gebruiker aan die niet is gekoppeld aan een SQL-geauthenticeerde login. Het kan als gast verbinding maken met andere databases. Je kunt rechten aan deze gebruiker toewijzen zonder in te loggen. Wanneer de beveiligingscontext verandert naar een gebruiker zonder login, ontvangt de oorspronkelijke gebruiker de rechten van de gebruiker zonder login. Zie bijvoorbeeld D. Een gebruiker aanmaken en gebruiken zonder login.

Alleen gebruikers die zijn toegewezen aan Windows-principals kunnen het backslash-teken (\) bevatten.

Je kunt het niet gebruiken CREATE USER om een gastgebruiker aan te maken omdat de gastgebruiker al in elke database aanwezig is. Je kunt de gastgebruiker inschakelen door hem CONNECT toestemming te geven, zoals getoond:

GRANT CONNECT TO guest; 
GO  

Je kunt informatie over databasegebruikers bekijken in de sys.database_principals catalogusweergave.

Gebruik de syntaxisextensie FROM EXTERNAL PROVIDER om Microsoft Entra-aanmeldingen op serverniveau te maken in Azure SQL Database en Azure SQL Managed Instance. Door gebruik te maken van Microsoft Entra-inloggegevens kun je database-niveau Microsoft Entra-principes koppelen aan server-niveau Microsoft Entra-logins. Om een Microsoft Entra-gebruiker aan te maken vanuit een Microsoft Entra-login, gebruik je de volgende syntaxis:

CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];

Wanneer je de gebruiker aanmaakt in de Azure SQL-database, moet de login_name overeenkomen met een bestaande Microsoft Entra-login. Anders creëert het gebruik van de FROM EXTERNAL PROVIDER clausule alleen een Microsoft Entra-gebruiker zonder login in de master database. Bijvoorbeeld, het volgende commando maakt een ingebouwde gebruiker aan:

CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;

Syntaxissamenvatting

gebruikers op basis van aanmeldingen in master

In de volgende lijst ziet u mogelijke syntaxis voor gebruikers op basis van aanmeldingen. De standaardschemaopties worden niet weergegeven.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • 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

gebruikers die zich verifiëren bij de database

De volgende lijst bevat mogelijke syntaxis voor gebruikers die alleen kunnen worden gebruikt in een ingesloten database. De gemaakte gebruikers hebben geen betrekking op aanmeldingen in de hoofddatabase database. De standaardschema- en taalopties worden niet vermeld.

Important

Deze syntaxis verleent gebruikers toegang tot de database en verleent ook nieuwe toegang tot de database-engine.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER Test WITH PASSWORD = '<strong password>'

gebruikers op basis van Windows-principals zonder aanmeldingen in de master systeemdatabase

De volgende lijst bevat mogelijke syntaxis voor gebruikers die toegang hebben tot de database-engine via een Windows-groep, maar die geen aanmelding hebben in de master systeemdatabase. Deze syntaxis kan worden gebruikt in alle typen databases. De standaardschema- en taalopties worden niet vermeld.

Deze syntaxis is vergelijkbaar met gebruikers op basis van aanmeldingen in master, maar deze categorie gebruiker heeft geen aanmelding in master. De gebruiker moet toegang hebben tot de database-engine via een Windows-groepsaanmelding.

Deze syntaxis is vergelijkbaar met ingesloten databasegebruikers op basis van Windows-principals, maar deze categorie gebruiker krijgt geen nieuwe toegang tot de database-engine.

  • CREATE USER [Domain1\WindowsUserTest]
  • CREATE USER [Domain1\WindowsUserTest] FOR LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsUserTest] FROM LOGIN Domain1\WindowsUserTest
  • CREATE USER [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
  • CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]

gebruikers die niet kunnen verifiëren

De volgende lijst bevat mogelijke syntaxis voor gebruikers die zich niet kunnen aanmelden bij SQL Server.

  • 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

Security

Het maken van een gebruiker verleent toegang tot een database, maar verleent niet automatisch toegang tot de objecten in een database. Nadat u een gebruiker hebt gemaakt, moeten algemene acties gebruikers toevoegen aan databaserollen die gemachtigd zijn voor toegang tot databaseobjecten of objectmachtigingen verlenen aan de gebruiker. Zie Aan de slag met database-enginemachtigingenvoor informatie over het ontwerpen van een machtigingssysteem.

Speciale overwegingen voor gesloten databases

Als de gebruiker geen aanmelding heeft in de master-database, moet de verbindingsreeks de naam van de ingesloten database bevatten als de initiële catalogus wanneer deze verbinding maakt met een ingesloten database. De initiële catalogusparameter is altijd vereist voor een ingesloten databasegebruiker met een wachtwoord.

In een ingesloten database helpt het maken van gebruikers om de database te scheiden van het exemplaar van de database-engine, zodat de database eenvoudig naar een ander exemplaar van SQL Server kan worden verplaatst. Zie voor meer informatie Ingesloten databases en Ingesloten databasegebruikers: uw database draagbaremaken. Om een databasegebruiker te veranderen van een gebruiker gebaseerd op een SQL-geauthenticeerde login naar een ingebouwde databasegebruiker met wachtwoord, zie sp_migrate_user_to_contained (Transact-SQL).

In een ingesloten database hoeven gebruikers zich niet aan te melden bij de master-database. Beheerders van database-engine moeten begrijpen dat toegang tot een ingesloten database kan worden verleend op databaseniveau, in plaats van op database-engineniveau. Zie Aanbevolen beveiligingsprocedures met ingesloten databasesvoor meer informatie.

Wanneer u ingesloten databasegebruikers in Azure SQL Database gebruikt, configureert u de toegang met behulp van een firewallregel op databaseniveau in plaats van een firewallregel op serverniveau. Zie sp_set_database_firewall_rule (Azure SQL Database)voor meer informatie.

Voor gebruikers van SQL Server 2022 (16.x), Azure SQL Database, Azure SQL Managed Instance en Azure Synapse Analytics bevat databases, ondersteunt SSMS multifactorauthenticatie. Zie Microsoft Entra-meervoudige verificatie gebruikenvoor meer informatie.

Permissions

Vereist ALTER ANY-machtigingen USER voor de database.

Rechten voor SQL Server 2022 en latere versies

Vereist CREATE USER machtiging voor de database.

Examples

A. Maak een databasegebruiker aan op basis van een SQL Server-login

Het volgende voorbeeld maakt eerst een SQL Server-login aan die in de master database is benoemdtest, en vervolgens een bijbehorende databasegebruiker test in AdventureWorks2025.

--Connect to the master database
CREATE LOGIN test   
    WITH PASSWORD = '<strong password>';  

Ga naar een gebruikersdatabase. Gebruik in SQL Server bijvoorbeeld de USE [AdventureWorks2022]-instructie. In Azure SQL Database is de USE instructie niet beschikbaar. Maak in plaats daarvan direct verbinding met de beoogde database en voer de rest van het codevoorbeeld uit. Dit inlogvoorbeeld geldt niet voor de SQL-database in Microsoft Fabric, die geen inlogs of gebruikers op basis van inloggegevens ondersteunt.

--Connect to a user database
CREATE USER test FOR LOGIN test;
GO   

B. Maak een databasegebruiker aan met een standaardschema

Het volgende voorbeeld maakt eerst een serverlogin aan met een naam testlogin van een door u opgegeven wachtwoord, en vervolgens een overeenkomstige databasegebruiker testuser, met het standaardschema Marketing.

--Connect to the master database
CREATE LOGIN testlogin
    WITH PASSWORD = '<strong password>';  

Ga naar een gebruikersdatabase. Gebruik in SQL Server bijvoorbeeld de USE [AdventureWorks2022]-instructie. In Azure SQL Database en SQL Database in Microsoft Fabric is de USE instructie niet beschikbaar. Maak in plaats daarvan direct verbinding met de beoogde database en voer de rest van het codevoorbeeld uit.

--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
    WITH DEFAULT_SCHEMA = Marketing;  

C. Maak een databasegebruiker aan vanuit een certificaat

In het volgende voorbeeld wordt een databasegebruiker test gemaakt op basis van certificaat Contoso_Cert. Voor meer informatie, zie 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. Maak een gebruiker aan en gebruik zonder inloggen

In het volgende voorbeeld wordt een databasegebruiker gemaakt CustomApp die niet is toegewezen aan een SQL Server-aanmelding. In het voorbeeld wordt vervolgens een gebruiker adventure-works\test toestemming verleend om de CustomApp gebruiker te imiteren.

USE AdventureWorks2022;  
CREATE USER CustomApp WITHOUT LOGIN ;  
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\test] ;  
GO

Als u de CustomApp-referenties wilt gebruiken, voert de gebruiker adventure-works\test de volgende instructie uit.

EXECUTE AS USER = 'CustomApp' ;  
GO  

De gebruiker voert de volgende instructie uit om terug te keren naar de adventure-works\test referenties.

REVERT ;  
GO  

E. Maak een ingebouwde databasegebruiker aan met een wachtwoord

In het volgende voorbeeld wordt een ingesloten databasegebruiker met een wachtwoord gemaakt. Je kunt dit voorbeeld alleen uitvoeren in een besloten database.

Dit voorbeeld werkt in SQL Database als je .DEFAULT_LANGUAGE

USE AdventureWorks2022;  
GO  
CREATE USER test  
WITH PASSWORD='<password>'
    , DEFAULT_LANGUAGE=[Brazilian]  
    , DEFAULT_SCHEMA=[dbo]  
GO   

F. Maak een ingebouwde databasegebruiker aan voor een domeinlogin

Het volgende voorbeeld creëert een gebruiker in de besloten database voor een login met de naam test in een domein genaamd Contoso. Je kunt dit voorbeeld alleen uitvoeren in een besloten database.

USE AdventureWorks2022;
GO  
CREATE USER [Contoso\test] ;  
GO   

G. Maak een ingebouwde databasegebruiker aan met een specifieke SID

Het volgende voorbeeld creëert een SQL Server geauthenticeerde ingebouwde databasegebruiker genaamd TestUser. Je kunt dit voorbeeld alleen uitvoeren in een besloten database.

USE AdventureWorks2022;  
GO  
CREATE USER TestUser WITH PASSWORD = '<strong password>'  
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;

H. Maak een gebruiker aan om versleutelde gegevens te kopiëren

In het volgende voorbeeld wordt een gebruiker gemaakt waarmee gegevens kunnen worden gekopieerd die worden beveiligd door de functie Always Encrypted van de ene set tabellen, die versleutelde kolommen bevatten, naar een andere set tabellen met versleutelde kolommen (in dezelfde of een andere database). Zie Gevoelige gegevens migreren die zijn beveiligd door Always Encryptedvoor meer informatie.

Van toepassing op: SQL Server 2016 (13.x) en latere versies, SQL Database.

CREATE USER [test]   
WITH   
      DEFAULT_SCHEMA = dbo  
    , ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;  

I. Maak een Microsoft Entra-gebruiker aan vanuit een Microsoft Entra-login in Azure SQL Database en Azure SQL Managed Instance

Gebruik de volgende syntaxis om een Microsoft Entra-gebruiker te maken op basis van een Microsoft Entra-aanmelding.

Log in op je Azure SQL Database logische server of SQL Managed Instance met een Microsoft Entra-login. Gebruik de serveradmin-login of een login die lid is van de loginmanager rol in SQL Database, of die de sysadmin rol heeft toegekend in SQL Managed Instance.

Met het volgende T-SQL-script maakt u een Microsoft Entra-gebruiker test@contoso.com, op basis van de test@contoso.com. Deze login is in het CREATE LOGIN voorbeeld aangemaakt.

CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];
GO

Important

Bij het aanmaken van een USER Microsoft Entra login specificeer je de user_name als dezelfde login_name vanaf LOGIN.

Het maken van een Microsoft Entra-gebruiker als een groep vanuit een Microsoft Entra-aanmelding die een groep is, wordt ondersteund.

CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];

GO

U kunt ook een Microsoft Entra-gebruiker maken op basis van een Microsoft Entra-aanmelding die een groep is.

CREATE USER [test@contoso.com] FROM LOGIN [MS Entra group];

GO

J. Een ingesloten databasegebruiker maken op basis van een Microsoft Entra-principal

Met de volgende syntaxis maakt u een Microsoft Entra-gebruiker test@contoso.com, in een database zonder een bijbehorende aanmelding in master. De database-engine valideert dat de opgegeven gebruiker bestaat in Microsoft Entra.

CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
GO

In een SQL-database in Microsoft Fabric kun je niet gebruiken FROM EXTERNAL PROVIDER als een principal die uitgeeft CREATE USER een service principal is in Microsoft Entra.

K. Een ingesloten databasegebruiker maken van een Microsoft Entra-principal zonder validatie

Van toepassing op: SQL-database in Microsoft Fabric en Azure SQL Database

In de voorbeelden in deze sectie worden databasegebruikers voor Microsoft Entra-principals gemaakt zonder principal-namen in Microsoft Entra te valideren.

In het volgende T-SQL-voorbeeld wordt een databasegebruiker gemaakt voor de Microsoft Entra-gebruiker met de naam test@contoso.com. Vervang <unique identifier sid> door de SID van de nieuwe gebruiker in de object-id van de Microsoft Entra-gebruiker.

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

In het volgende voorbeeld wordt een databasegebruiker gemaakt voor de Microsoft Entra-service-principal, met de naam HRApp. Vervang <unique identifier sid> door de SID van de nieuwe gebruiker in de client-id van de service-principal in Microsoft Entra.

Note

Gebruik de client-ID, niet de object-ID, bij het specificeren van een Microsoft Entra serviceprincipal, User-Assigned Managed Identity (UAMI), of System-Assigned Managed Identity (SAMI).

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

In het volgende voorbeeld wordt een databasegebruiker gemaakt voor de Microsoft Entra-groep, met de naam HR. Vervang <unique identifier sid> door de SID van de nieuwe gebruiker in de object-id van de groep.

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