Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
van toepassing op:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-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
masterdatabase. BijvoorbeeldCREATE 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\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
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\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]
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 LOGINCREATE USER CERTUSER FOR CERTIFICATE SpecialCertCREATE USER CERTUSER FROM CERTIFICATE SpecialCertCREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKeyCREATE 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);
Verwante inhoud
- Een databasegebruiker maken
- sys.database_principals (Transact-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- GEBEURTENISGEGEVENS (Transact-SQL)
- ingesloten databases
- Microsoft Entra-verificatie voor Azure SQL
- Aan de slag met database-enginemachtigingen
- ALTER ROLE (Transact-SQL)
- GRANT machtigingen voor objecten (Transact-SQL)
- Toestemmingen (Database Engine)