CREATE USER (Transact-SQL)
van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-database in Microsoft Fabric
Hiermee voegt u een gebruiker toe aan de huidige database. De 13 typen gebruikers worden weergegeven met een voorbeeld van de meest eenvoudige syntaxis:
Notitie
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\Fritz];
Gebruiker op basis van een aanmelding op basis van een Windows-groep.
CREATE USER [Contoso\Sales];
Gebruiker op basis van een aanmelding met behulp van SQL Server-verificatie.
CREATE USER Mary;
Gebruiker op basis van een Microsoft Entra-aanmelding.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Notitie
Microsoft Entra-server-principals (aanmeldingen) momenteel in openbare preview zijn voor Azure SQL Database.
Notitie
Aanmeldingen en daarom worden gebruikers op basis van aanmeldingen niet ondersteund in SQL Database in Microsoft Fabric.
gebruikers die zich verifiëren bij de database- Aanbevolen om uw database draagbaarder te maken.
Altijd toegestaan in 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\Fritz];
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 [Fritz@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\Fritz];
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\Fritz];
gebruikers die niet kunnen verifiëren. Deze gebruikers kunnen zich niet aanmelden bij SQL Server of SQL Database.
- Gebruiker zonder aanmelding. Kan niet aanmelden, maar kan machtigingen krijgen.
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 CarnationProduction50;
- 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 PacificSales09;
Transact-SQL syntaxisconventies
Syntaxis
Syntaxis voor SQL Server, Azure SQL Database, Azure SQL Managed Instance
-- Syntax Users based on logins in master
CREATE USER user_name
[
{ FOR | FROM } LOGIN login_name
]
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
-- Users that authenticate at the database
CREATE USER
{
windows_principal [ WITH <options_list> [ ,... ] ]
| user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]
| Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users based on Windows principals that connect through Windows group logins
CREATE USER
{
windows_principal [ { FOR | FROM } LOGIN windows_principal ]
| user_name { FOR | FROM } LOGIN windows_principal
}
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
-- Users that cannot authenticate
CREATE USER user_name
{
WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]
| { FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| SID = sid
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
-- SQL Database syntax when connected to a federation member
CREATE USER user_name
[;]
-- Syntax for users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name
[ { FOR | FROM } LOGIN login_name ]
| FROM EXTERNAL PROVIDER
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
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
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 }
Syntaxis voor parallel datawarehouse
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Argumenten
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.
AANMELDINGs-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 instructie CREATE USER de enige instructie in een SQL-batch is, ondersteunt Azure SQL Database de WITH LOGIN-component. Als de instructie CREATE USER niet de enige instructie in een SQL-batch is of wordt uitgevoerd in dynamische SQL, wordt de WITH LOGIN-component niet ondersteund.
WITH DEFAULT_SCHEMA = schema_name
Hiermee geeft u het eerste schema op 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 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-principals vereist de syntaxis CREATE USER:
UserPrincipalName van het Microsoft Entra-object voor Microsoft Entra-gebruikers.
CREATE USER [bob@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 virtuele
master
-database. BijvoorbeeldCREATE USER [bob@contoso.com] FROM LOGIN [bob@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.
WITH PASSWORD = 'password'
van toepassing op: SQL Server 2012 (11.x) en hoger, 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) wordt opgeslagen wachtwoordgegevens berekend met SHA-512 van het gezouten wachtwoord.
ZONDER AANMELDING
Hiermee geeft u op dat de gebruiker niet moet worden toegewezen aan een bestaande aanmelding.
CERTIFICAAT cert_name
van toepassing op: SQL Server 2008 (10.0.x) en hoger, SQL Database, SQL-database in Microsoft Fabric
Hiermee geeft u het certificaat waarvoor de databasegebruiker wordt gemaakt.
ASYMMETRISCHE SLEUTEL asym_key_name
van toepassing op: SQL Server 2008 (10.0.x) en hoger, 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 hoger, SQL Database
Hiermee geeft u de standaardtaal voor de nieuwe gebruiker. Als er een standaardtaal is opgegeven voor de gebruiker en de standaardtaal van de database later wordt gewijzigd, blijft de standaardtaal van de gebruiker ongewijzigd. Als er geen standaardtaal is opgegeven, is de standaardtaal voor de gebruiker de standaardtaal van de database. Als de standaardtaal voor de gebruiker niet is opgegeven en de standaardtaal van de database later wordt gewijzigd, wordt de standaardtaal van de gebruiker gewijzigd in de nieuwe standaardtaal voor de database.
Belangrijk
DEFAULT_LANGUAGE wordt alleen gebruikt voor een ingesloten databasegebruiker.
SID = sid
is van toepassing op: SQL Server 2012 (11.x) en hoger, en op SQL-database in Microsoft Fabric.
In SQL Server 2012 (11.x) en hoger geldt alleen voor gebruikers met wachtwoorden (SQL Server-verificatie) in een ingesloten database. Hiermee geeft u de SID van de nieuwe databasegebruiker. Als deze optie niet is geselecteerd, wijst SQL Server automatisch een SID toe. Gebruik de SID-parameter om gebruikers te maken in meerdere databases met dezelfde identiteit (SID). Dit is handig bij het maken van gebruikers in meerdere databases om zich voor te bereiden op AlwaysOn-failover. Als u de SID van een gebruiker wilt bepalen, voert u een query uit 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/groep zijn. Als de Microsoft Entra-principal een service-principal is (een toepassing of een beheerde identiteit), moet de id een toepassings-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. Het argument SID
moet samen met TYPE
worden gebruikt.
TYPE = [ E | X ]
is van toepassing op: SQL-database in Microsoft Fabric.
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 hoger, 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.
Waarschuwing
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 PROVIDER
van toepassing op: 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 principal die de CREATE USER
instructie uitgeeft een Microsoft Entra-gebruikersprincipaal is, moet de principal (of de groep van de principal) de rol van Directory Readers hebben in Microsoft Entra.
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 SQL Database in Microsoft Fabric is FROM EXTERNAL PROVIDER
niet toegestaan als een principal die CREATE USER
uitgeeft 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 Database, Azure SQL Managed Instance, SQL-database in Microsoft Fabric
Hiermee geeft u de Microsoft Entra Object ID. Als de OBJECT_ID
is opgegeven, kan de user_name een door de gebruiker gedefinieerde alias zijn die is gevormd uit de oorspronkelijke principal-weergavenaam met een achtervoegsel toegevoegd. De user_name moet een unieke naam zijn in de sys.database_principals
weergave en moet voldoen aan alle andere sysname
beperkingen. Zie Microsoft Entra-aanmeldingen en gebruikers met niet-actieve weergavenamenvoor meer informatie over het gebruik van de optie WITH OBJECT_ID
.
Notitie
Als de weergavenaam van de service-principal geen duplicaat is, moet de standaardinstructie CREATE LOGIN
of CREATE USER
worden gebruikt. 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 is raadzaam om een alias te maken met behulp van een achtervoegsel om de service-principal uniek te identificeren. De WITH OBJECT_ID
-extensie wordt niet ondersteund voor SQL Server.
Opmerkingen
Als FOR LOGIN
wordt weggelaten, wordt de nieuwe databasegebruiker toegewezen aan de SQL Server-aanmelding met dezelfde naam.
Het standaardschema is het eerste schema dat door de server wordt doorzocht wanneer de namen van objecten voor deze databasegebruiker worden omgezet. Tenzij anders opgegeven, is het standaardschema de eigenaar van objecten die door deze databasegebruiker zijn gemaakt.
Als de gebruiker een standaardschema heeft, wordt dat standaardschema gebruikt. Als de gebruiker geen standaardschema heeft, maar de gebruiker lid is van een groep met een standaardschema, wordt het standaardschema van de groep gebruikt. Als de gebruiker geen standaardschema heeft en lid is van meer dan één groep, is het standaardschema voor de gebruiker dat van de Windows-groep met de laagste principal_id en een expliciet ingesteld standaardschema. (Het is niet mogelijk om expliciet een van de beschikbare standaardschema's als voorkeursschema te selecteren.) Als er geen standaardschema voor een gebruiker kan worden bepaald, wordt het dbo--schema gebruikt.
DEFAULT_SCHEMA kan worden ingesteld voordat het schema waarnaar wordt verwezen, wordt gemaakt.
DEFAULT_SCHEMA kan niet worden opgegeven wanneer u een gebruiker maakt die is toegewezen aan een certificaat of een asymmetrische sleutel.
De waarde van DEFAULT_SCHEMA wordt genegeerd als de gebruiker lid is van de vaste serverfunctie sysadmin. Alle leden van de vaste serverrol sysadmin hebben een standaardschema van dbo
.
Met de component WITHOUT LOGIN maakt u een gebruiker die niet is toegewezen aan een SQL Server-aanmelding. Het kan als gast verbinding maken met andere databases. Machtigingen kunnen zonder aanmelding aan deze gebruiker worden toegewezen en wanneer de beveiligingscontext wordt gewijzigd in een gebruiker zonder aanmelding, ontvangen de oorspronkelijke gebruikers de machtigingen van de gebruiker zonder aanmelding. Zie het voorbeeld D. Een gebruiker maken en gebruiken zonder aanmelding.
Alleen gebruikers die zijn toegewezen aan Windows-principals kunnen het backslash-teken (\) bevatten.
CREATE USER kan niet worden gebruikt om een gastgebruiker te maken, omdat de gastgebruiker al in elke database bestaat. U kunt de gastgebruiker inschakelen door deze CONNECT-machtiging te verlenen, zoals wordt weergegeven:
GRANT CONNECT TO guest;
GO
Informatie over databasegebruikers is zichtbaar 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. Met Microsoft Entra-aanmeldingen kunnen Microsoft Entra-principals op databaseniveau worden toegewezen aan Microsoft Entra-aanmeldingen op serverniveau. Gebruik de volgende syntaxis om een Microsoft Entra-gebruiker te maken op basis van een Microsoft Entra-aanmelding:
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];
Wanneer u de gebruiker maakt in de Azure SQL-database, moet de login_name overeenkomen met een bestaande Microsoft Entra-aanmelding, anders met behulp van de component FROM EXTERNAL PROVIDER maakt u alleen een Microsoft Entra-gebruiker zonder aanmelding in de master
-database. Met deze opdracht wordt bijvoorbeeld een ingesloten gebruiker gemaakt:
CREATE USER [bob@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\WindowsUserBarry]
CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
CREATE USER SQLAUTHLOGIN
CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN
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.
Belangrijk
Deze syntaxis verleent gebruikers toegang tot de database en verleent ook nieuwe toegang tot de database-engine.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'
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\WindowsUserBarry]
CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
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
Veiligheid
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 ingesloten 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. Zie sp_migrate_user_to_contained (Transact-SQL)als u een databasegebruiker wilt wijzigen van een gebruiker op basis van sql Server-verificatie.
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 SQL Server 2022 (16.x), SQL Database, Azure SQL Managed Instance en Azure Synapse Analytics bevat databasegebruikers, ondersteunt SSMS meervoudige verificatie. Zie Microsoft Entra-meervoudige verificatie gebruikenvoor meer informatie.
Machtigingen
Vereist ALTER ANY USER-machtiging voor de database.
Machtigingen voor SQL Server 2022 en hoger
Vereist CREATE USER-machtiging voor de database.
Voorbeelden
Een. Een databasegebruiker maken op basis van een SQL Server-aanmelding
In het volgende voorbeeld maakt u eerst een SQL Server-aanmelding met de naam AbolrousHazem
en maakt u vervolgens een bijbehorende databasegebruiker AbolrousHazem
in AdventureWorks2022
.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
Ga naar een gebruikersdatabase. Gebruik in SQL Server bijvoorbeeld de USE AdventureWorks2022
-instructie. In Azure Synapse Analytics en Analytics Platform System (PDW) moet u een nieuwe verbinding maken met de gebruikersdatabase.
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
B. Een databasegebruiker maken met een standaardschema
In het volgende voorbeeld maakt u eerst een serveraanmelding met de naam WanidaBenshoof
met een wachtwoord en maakt u vervolgens een bijbehorende databasegebruiker Wanida
, met het standaardschema Marketing
.
CREATE LOGIN WanidaBenshoof
WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2022;
CREATE USER Wanida FOR LOGIN WanidaBenshoof
WITH DEFAULT_SCHEMA = Marketing;
GO
C. Een databasegebruiker maken op basis van een certificaat
In het volgende voorbeeld wordt een databasegebruiker JinghaoLiu
gemaakt op basis van certificaat CarnationProduction50
.
van toepassing op: SQL Server 2008 (10.0.x) en hoger.
USE AdventureWorks2022;
CREATE CERTIFICATE CarnationProduction50
WITH SUBJECT = 'Carnation Production Facility Supervisors',
EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO
D. Een gebruiker maken en gebruiken zonder aanmelding
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\tengiz0
toestemming verleend om de CustomApp
gebruiker te imiteren.
USE AdventureWorks2022;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;
GO
Als u de CustomApp
-referenties wilt gebruiken, voert de gebruiker adventure-works\tengiz0
de volgende instructie uit.
EXECUTE AS USER = 'CustomApp' ;
GO
De gebruiker voert de volgende instructie uit om terug te keren naar de adventure-works\tengiz0
referenties.
REVERT ;
GO
E. Een ingesloten databasegebruiker met een wachtwoord maken
In het volgende voorbeeld wordt een ingesloten databasegebruiker met een wachtwoord gemaakt. Dit voorbeeld kan alleen worden uitgevoerd in een ingesloten database.
Van toepassing op: SQL Server 2012 (11.x) en hoger. Dit voorbeeld werkt in SQL Database als DEFAULT_LANGUAGE wordt verwijderd.
USE AdventureWorks2022;
GO
CREATE USER Carlo
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. Een ingesloten databasegebruiker maken voor een domeinaanmelding
In het volgende voorbeeld wordt een ingesloten databasegebruiker gemaakt voor een aanmelding met de naam Fritz in een domein met de naam Contoso. Dit voorbeeld kan alleen worden uitgevoerd in een ingesloten database.
Van toepassing op: SQL Server 2012 (11.x) en hoger.
USE AdventureWorks2022;
GO
CREATE USER [Contoso\Fritz] ;
GO
G. Een ingesloten databasegebruiker maken met een specifieke SID
In het volgende voorbeeld wordt een door SQL Server geverifieerde ingesloten databasegebruiker gemaakt met de naam CarmenW. Dit voorbeeld kan alleen worden uitgevoerd in een ingesloten database.
Van toepassing op: SQL Server 2012 (11.x) en hoger.
USE AdventureWorks2022;
GO
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. Een gebruiker maken 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 hoger, SQL Database.
CREATE USER [Chin]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
Ik. Een Microsoft Entra-gebruiker maken vanuit een Microsoft Entra-aanmelding in Azure SQL
Gebruik de volgende syntaxis om een Microsoft Entra-gebruiker te maken op basis van een Microsoft Entra-aanmelding.
Meld u aan bij uw logische server in Azure of SQL Managed Instance met behulp van een Microsoft Entra-aanmelding die de sysadmin
rol in SQL Managed Instance of loginmanager
rol in SQL Database heeft gekregen. Met het volgende T-SQL-script maakt u een Microsoft Entra-gebruiker bob@contoso.com
, op basis van de bob@contoso.com
. Deze aanmelding is gemaakt in het voorbeeld CREATE LOGIN.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO
Belangrijk
Wanneer u een USER maakt op basis van een Microsoft Entra-aanmelding, geeft u de user_name op als dezelfde login_name van 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 [bob@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 bob@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 [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
K. Een ingesloten databasegebruiker maken van een Microsoft Entra-principal zonder validatie
van toepassing op: SQL-database in Microsoft Fabric
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 bob@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 = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);
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.
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 @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);
Volgende stappen
Zodra de gebruiker is gemaakt, kunt u overwegen de gebruiker toe te voegen aan een databaserol met behulp van de instructie ALTER ROLE.
U kunt ook objectmachtigingen verlenen aan de rol, zodat ze toegang hebben tot tabellen. Zie Machtigingenvoor algemene informatie over het SQL Server-beveiligingsmodel.
Verwante inhoud
- een databasegebruiker maken
- sys.database_principals (Transact-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
-
EVENTDATA (Transact-SQL) - ingesloten databases
- verbinding maken met SQL Database met behulp van Microsoft Entra-verificatie
- Aan de slag met database-enginemachtigingen