SKAPA ANVÄNDARE (Transact-SQL)
gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL-databas i Microsoft Fabric
Lägger till en användare i den aktuella databasen. De 13 typerna av användare visas med ett exempel på den mest grundläggande syntaxen:
Not
Även om Microsoft Entra ID är det nya namnet för Azure Active Directory (Azure AD), för att förhindra avbrott i befintliga miljöer, förblir Azure AD fortfarande i vissa hårdkodade element som gränssnittsfält, anslutningsproviders, felkoder och cmdletar. I den här artikeln är de två namnen utbytbara.
Användare baserat på inloggningar i master
Användare baserat på en inloggning baserat på ett Windows Active Directory-konto.
CREATE USER [Contoso\Fritz];
Användare baserat på en inloggning baserat på en Windows-grupp.
CREATE USER [Contoso\Sales];
Användare baserat på en inloggning med SQL Server-autentisering.
CREATE USER Mary;
Användare baserat på en Microsoft Entra-inloggning.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Not
Microsoft Entra-serverhuvudkonton (inloggningar) är för närvarande i offentlig förhandsversion för Azure SQL Database.
Not
Inloggningar, och därför användare baserat på inloggningar, stöds inte i SQL-databasen i Microsoft Fabric.
Användare som autentiserar i databasen – Rekommenderas för att göra databasen mer portabel.
Tillåts alltid i SQL Database. Tillåts endast i en innesluten databas i SQL Server.
Användare baserat på en Windows-användare som inte har någon inloggning.
CREATE USER [Contoso\Fritz];
Användare baserat på en Windows-grupp som inte har någon inloggning.
CREATE USER [Contoso\Sales];
Användare i SQL Database eller Azure Synapse Analytics baserat på en Microsoft Entra-användare.
CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;
Innehöll databasanvändare med lösenord. (Inte tillgängligt i Azure Synapse Analytics.)
CREATE USER Mary WITH PASSWORD = '********';
Användare baserat på Windows-huvudnamn som ansluter via Windows-gruppinloggningar
Användare baserat på en Windows-användare som inte har någon inloggning, men som kan ansluta till databasmotorn via medlemskap i en Windows-grupp.
CREATE USER [Contoso\Fritz];
Användare baserat på en Windows-grupp som inte har någon inloggning, men som kan ansluta till databasmotorn via medlemskap i en annan Windows-grupp.
CREATE USER [Contoso\Fritz];
Användare som inte kan autentisera – Dessa användare kan inte logga in på SQL Server eller SQL Database.
- Användare utan inloggning. Det går inte att logga in men kan beviljas behörigheter.
CREATE USER CustomApp WITHOUT LOGIN;
- Användare baserat på ett certifikat. Det går inte att logga in men kan beviljas behörigheter och kan signera moduler.
CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
- Användare baserat på en asymmetrisk nyckel. Det går inte att logga in men kan beviljas behörigheter och kan signera moduler.
CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;
Transact-SQL syntaxkonventioner
Syntax
Syntax för 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 ] ]
Syntax för Azure Synapse Analytics
CREATE USER user_name
[ { { FOR | FROM } { LOGIN login_name }
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Syntax för SQL-databas i 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 }
Syntax för parallell informationslager
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Argument
user_name
Anger det namn med vilket användaren identifieras i den här databasen. user_name är ett sysname. Den kan vara upp till 128 tecken lång. När du skapar en användare baserat på ett Windows-huvudnamn blir Windows huvudnamn användarnamnet om inte ett annat användarnamn anges.
INLOGGNING login_name
Anger den inloggning som databasanvändaren skapas för. login_name måste vara en giltig inloggning på servern. Kan vara en inloggning baserat på ett Windows-huvudnamn (användare eller grupp), en inloggning med SQL Server-autentisering eller en inloggning med ett Microsoft Entra-huvudnamn (användare, grupp eller program). När den här SQL Server-inloggningen kommer in i databasen hämtas namnet och ID:t för databasanvändaren som skapas. När du skapar en inloggning mappad från ett Windows-huvudnamn använder du formatet [<domainName>\<loginName>]. Exempel finns i Syntaxsammanfattning.
Om instruktionen CREATE USER är den enda instruktionen i en SQL-batch stöder Azure SQL Database WITH LOGIN-satsen. Om instruktionen CREATE USER inte är den enda instruktionen i en SQL-batch eller körs i dynamisk SQL stöds inte WITH LOGIN-satsen.
MED DEFAULT_SCHEMA = schema_name
Anger det första schemat som ska genomsökas av servern när det löser namnen på objekten för den här databasanvändaren.
"windows_principal"
Anger det Windows-huvudnamn som databasanvändaren skapas för. windows_principal kan vara en Windows-användare eller en Windows-grupp. Användaren skapas även om windows_principal inte har någon inloggning. Om windows_principal inte har någon inloggning när du ansluter till SQL Server måste Windows-huvudkontot autentiseras på databasmotorn genom medlemskap i en Windows-grupp som har en inloggning, eller så måste anslutningssträngen ange den inneslutna databasen som den ursprungliga katalogen. När du skapar en användare från ett Windows-huvudnamn använder du formatet [<domainName>\<loginName>]. Exempel finns i Syntaxsammanfattning. Användare som baseras på Active Directory-användare är begränsade till namn på färre än 21 tecken.
"Microsoft_Entra_principal"
gäller för: SQL Database, SQL Managed Instance, Azure Synapse Analytics, SQL Database i Microsoft Fabric
Anger det Microsoft Entra-huvudnamn som databasanvändaren skapas för. Microsoft_Entra_principal kan vara en Microsoft Entra-användare, en Microsoft Entra-grupp eller ett Microsoft Entra-program. (Microsoft Entra-användare kan inte ha Windows-autentiseringsinloggningar i SQL Database, endast databasanvändare.) Anslutningssträngen måste ange den inneslutna databasen som den första katalogen.
För Microsoft Entra-huvudkonton kräver CREATE USER-syntaxen:
UserPrincipalName för Microsoft Entra-objektet för Microsoft Entra-användare.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
Microsoft Entra-serverhuvudkonton (inloggningar) introducerar att skapa användare som mappas till Microsoft Entra-inloggningar i den virtuella
master
-databasen. Till exempelCREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
Microsoft Entra-användare och tjänsthuvudnamn (program) som är medlemmar i fler än 2048 Microsoft Entra-säkerhetsgrupper stöds inte för att logga in på databaser i Azure SQL Database, Azure SQL Managed Instance eller Azure Synapse.
DisplayName för Microsoft Entra-objekt för Microsoft Entra-grupper och Microsoft Entra-program. Om du hade säkerhetsgruppen Nurses skulle du använda:
CREATE USER [Nurses] FROM EXTERNAL PROVIDER;
Mer information finns i Ansluta till SQL Database med hjälp av Microsoft Entra-autentisering.
MED LÖSENORD =lösenord
gäller för: SQL Server 2012 (11.x) och senare SQL Database.
Kan endast användas i en innesluten databas. Anger lösenordet för den användare som skapas. Från och med SQL Server 2012 (11.x) beräknas lagrad lösenordsinformation med SHA-512 av det saltade lösenordet.
UTAN INLOGGNING
Anger att användaren inte ska mappas till en befintlig inloggning.
CERTIFIKAT cert_name
gäller för: SQL Server 2008 (10.0.x) och senare, SQL Database, SQL Database i Microsoft Fabric
Anger det certifikat som databasanvändaren skapas för.
ASYMMETRISK NYCKEL asym_key_name
gäller för: SQL Server 2008 (10.0.x) och senare, SQL Database, SQL Database i Microsoft Fabric
Anger den asymmetriska nyckel som databasanvändaren skapas för.
DEFAULT_LANGUAGE = { NONE | <lcid> | <språknamn> | <språksalias> }
gäller för: SQL Server 2012 (11.x) och senare, SQL Database
Anger standardspråket för den nya användaren. Om ett standardspråk har angetts för användaren och standardspråket för databasen senare ändras, förblir användarnas standardspråk enligt angivet. Om inget standardspråk anges är standardspråket för användaren standardspråket för databasen. Om standardspråket för användaren inte har angetts och standardspråket för databasen senare ändras, ändras standardspråket för användaren till det nya standardspråket för databasen.
Viktig
DEFAULT_LANGUAGE används endast för en innesluten databasanvändare.
SID = sid
gäller för: SQL Server 2012 (11.x) och senare samt för SQL-databasen i Microsoft Fabric.
I SQL Server 2012 (11.x) och senare gäller endast för användare med lösenord (SQL Server-autentisering) i en innesluten databas. Anger SID för den nya databasanvändaren. Om det här alternativet inte är markerat tilldelar SQL Server automatiskt ett SID. Använd SID-parametern för att skapa användare i flera databaser som har samma identitet (SID). Detta är användbart när du skapar användare i flera databaser för att förbereda för AlwaysOn-redundans. Om du vill fastställa SID för en användare frågar du sys.database_principals.
I SQL-databasen i Microsoft Fabric ska sid
vara ett giltigt ID för det angivna Microsoft Entra-huvudkontot. Om huvudnamnet är en användare eller grupp ska ID:t vara ett Microsoft Entra-objekt-ID för användaren/gruppen. Om Microsoft Entra-huvudnamnet är ett huvudnamn för tjänsten (ett program eller en hanterad identitet) ska ID:t vara ett program-ID (eller ett klient-ID). Det angivna ID:t måste vara ett binary(16)
värde. Databasmotorn verifierar inte det angivna ID:t i Microsoft Entra. Argumentet SID
måste användas tillsammans med TYPE
.
TYPE = [ E | X ]
gäller för: SQL-databas i Microsoft Fabric.
Anger typen av ett Microsoft Entra-huvudnamn.
E
anger att huvudnamnet är en användare eller ett huvudnamn för tjänsten (ett program eller en hanterad identitet).
X
anger att huvudkontot är en grupp.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
gäller för: SQL Server 2016 (13.x) och senare SQL Database.
Undertrycker kryptografiska metadatakontroller på servern i masskopieringsåtgärder. På så sätt kan användaren masskopiera krypterade data mellan tabeller eller databaser, utan att dekryptera data. Standardvärdet är AV.
Varning
Felaktig användning av det här alternativet kan leda till att data skadas. Mer information finns i Migrera känsliga data som skyddas av Always Encrypted.
FRÅN EXTERN PROVIDER
gäller för: SQL Database, Azure SQL Managed Instance, SQL Database i Microsoft Fabric
Anger att huvudnamnet är för Microsoft Entra-autentisering. SQL Server verifierar automatiskt det angivna huvudnamnet i Microsoft Entra.
Om huvudnamnet som utfärdar CREATE USER
-instruktionen är ett Microsoft Entra-användarhuvudnamn måste huvudkontot (eller huvudnamnets grupp) vara i rollen Katalogläsare i Microsoft Entra.
Om huvudnamnet som utfärdar CREATE USER
-instruktionen i SQL Database och Azure SQL Managed Instance är ett huvudnamn för tjänsten, måste databasserverns eller den hanterade instansens identitet finnas i rollen Katalogläsare i Microsoft Entra.
I SQL-databasen i Microsoft Fabric tillåts inte FROM EXTERNAL PROVIDER
om ett huvudnamn som utfärdar CREATE USER
är tjänstens huvudnamn i Microsoft Entra. Tjänstens huvudnamn måste använda argumenten TYPE
och SID
för att skapa användare för Microsoft Entra-huvudnamn.
MED OBJECT_ID = "objectid"
gäller för: SQL Database, Azure SQL Managed Instance, SQL Database i Microsoft Fabric
Anger Microsoft Entra-objekt-ID. Om OBJECT_ID
anges kan user_name vara ett användardefinierat alias som skapats från det ursprungliga huvudnamnet med ett bifogat suffix. User_name måste vara ett unikt namn i sys.database_principals
-vyn och följa alla andra sysname
begränsningar. Mer information om hur du använder alternativet WITH OBJECT_ID
finns i Microsoft Entra-inloggningar och användare med icke-unika visningsnamn.
Not
Om visningsnamnet för tjänstens huvudnamn inte är en dubblett ska standardsatsen CREATE LOGIN
eller CREATE USER
användas. Tillägget WITH OBJECT_ID
är ett felsökningsreparationsobjekt som implementerats för användning med icke-substantiv tjänsthuvudnamn. Det rekommenderas inte att du använder det med ett unikt huvudnamn för tjänsten. Det går att använda WITH OBJECT_ID
-tillägget för ett huvudnamn för tjänsten utan att lägga till ett suffix, men det är inte uppenbart vilket tjänsthuvudnamn som inloggningen eller användaren skapades för. Vi rekommenderar att du skapar ett alias med hjälp av ett suffix för att unikt identifiera tjänstens huvudnamn. Tillägget WITH OBJECT_ID
stöds inte för SQL Server.
Anmärkningar
Om FOR LOGIN
utelämnas mappas den nya databasanvändaren till SQL Server-inloggningen med samma namn.
Standardschemat är det första schemat som genomsöks av servern när det löser namnen på objekten för den här databasanvändaren. Om inget annat anges är standardschemat ägare till objekt som skapats av den här databasanvändaren.
Om användaren har ett standardschema används standardschemat. Om användaren inte har något standardschema, men användaren är medlem i en grupp som har ett standardschema, används standardschemat för gruppen. Om användaren inte har något standardschema och är medlem i mer än en grupp är standardschemat för användaren det för Windows-gruppen med den lägsta principal_id och ett explicit inställt standardschema. (Det går inte att uttryckligen välja ett av de tillgängliga standardschemana som önskat schema.) Om inget standardschema kan fastställas för en användare används dbo- schema.
DEFAULT_SCHEMA kan ställas in innan schemat som det pekar på skapas.
DEFAULT_SCHEMA kan inte anges när du skapar en användare som mappas till ett certifikat eller en asymmetrisk nyckel.
Värdet för DEFAULT_SCHEMA ignoreras om användaren är medlem i den fasta serverrollen sysadmin. Alla medlemmar i den fasta sysadmin-serverrollen har ett standardschema för dbo
.
Satsen UTAN INLOGGNING skapar en användare som inte är mappad till en SQL Server-inloggning. Den kan ansluta till andra databaser som gäst. Behörigheter kan tilldelas till den här användaren utan inloggning och när säkerhetskontexten ändras till en användare utan inloggning får de ursprungliga användarna användarens behörigheter utan inloggning. Se exempel D. Skapa och använda en användare utan inloggning.
Endast användare som mappas till Windows-huvudnamn kan innehålla omvänt snedstreck (\).
CREATE USER kan inte användas för att skapa en gästanvändare eftersom gästanvändaren redan finns i varje databas. Du kan aktivera gästanvändaren genom att ge den behörigheten CONNECT, enligt följande:
GRANT CONNECT TO guest;
GO
Information om databasanvändare visas i sys.database_principals katalogvyn.
Använd syntaxtillägget FROM EXTERNAL PROVIDER
för att skapa Microsoft Entra-inloggningar på servernivå i Azure SQL Database och Azure SQL Managed Instance. Med Microsoft Entra-inloggningar kan Microsoft Entra-huvudkonton på databasnivå mappas till Microsoft Entra-inloggningar på servernivå. Om du vill skapa en Microsoft Entra-användare från en Microsoft Entra-inloggning använder du följande syntax:
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];
När du skapar användaren i Azure SQL-databasen måste login_name motsvara en befintlig Microsoft Entra-inloggning, annars skapar FRÅN EXTERN PROVIDER-satsen endast en Microsoft Entra-användare utan inloggning i master
-databasen. Det här kommandot skapar till exempel en innesluten användare:
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
Syntaxsammanfattning
Användare baserat på inloggningar i master
I följande lista visas möjlig syntax för användare baserat på inloggningar. Standardschemaalternativen visas inte.
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
användare som autentiserar i databasen
I följande lista visas möjlig syntax för användare som bara kan användas i en innesluten databas. De användare som skapas är inte relaterade till några inloggningar i huvuddatabasen. Standardschemat och språkalternativen visas inte.
Viktig
Den här syntaxen ger användarna åtkomst till databasen och ger även ny åtkomst till databasmotorn.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'
Användare baserat på Windows-huvudnamn utan inloggningar i master
systemdatabasen
I följande lista visas möjlig syntax för användare som har åtkomst till databasmotorn via en Windows-grupp men som inte har någon inloggning i master
systemdatabas. Den här syntaxen kan användas i alla typer av databaser. Standardschemat och språkalternativen visas inte.
Den här syntaxen liknar användare baserat på inloggningar i master
, men den här användarkategorin har ingen inloggning i master
. Användaren måste ha åtkomst till databasmotorn via en Windows-gruppinloggning.
Den här syntaxen liknar oberoende databasanvändare baserat på Windows-huvudnamn, men den här användarkategorin får inte ny åtkomst till databasmotorn.
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]
användare som inte kan autentisera
I följande lista visas möjlig syntax för användare som inte kan logga in på 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
Säkerhet
Att skapa en användare ger åtkomst till en databas men ger inte automatiskt åtkomst till objekten i en databas. När du har skapat en användare är vanliga åtgärder att lägga till användare i databasroller som har behörighet att komma åt databasobjekt eller bevilja objektbehörigheter till användaren. Information om hur du utformar ett behörighetssystem finns i Komma igång med behörigheter för databasmotorn.
Särskilda överväganden för inneslutna databaser
Om användaren inte har någon inloggning i den master
databasen när du ansluter till en innesluten databas måste anslutningssträngen innehålla det inneslutna databasnamnet som den ursprungliga katalogen. Den första katalogparametern krävs alltid för en oberoende databasanvändare med lösenord.
I en innesluten databas hjälper skapandet av användare till att separera databasen från instansen av databasmotorn så att databasen enkelt kan flyttas till en annan instans av SQL Server. Mer information finns i inneslutna databaser och oberoende databasanvändare – Gör databasen portabel. Information om hur du ändrar en databasanvändare från en användare baserat på en SQL Server-autentiseringsinloggning till en oberoende databasanvändare med lösenord finns i sp_migrate_user_to_contained (Transact-SQL).
I en innesluten databas behöver användarna inte ha inloggningar i den master
databasen. Databasmotoradministratörer bör förstå att åtkomst till en innesluten databas kan beviljas på databasnivå i stället för på databasmotornivå. Mer information finns i bästa praxis för säkerhet med inneslutna databaser.
När du använder oberoende databasanvändare i Azure SQL Database konfigurerar du åtkomsten med hjälp av en brandväggsregel på databasnivå i stället för en brandväggsregel på servernivå. Mer information finns i sp_set_database_firewall_rule (Azure SQL Database).
För SQL Server 2022 (16.x), SQL Database, Azure SQL Managed Instance och Azure Synapse Analytics innehöll databasanvändare stöder SSMS multifaktorautentisering. Mer information finns i Använda Microsoft Entra multifaktorautentisering.
Behörigheter
Kräver ALTER ANY USER-behörighet i databasen.
Behörigheter för SQL Server 2022 och senare
Kräver CREATE USER-behörighet för databasen.
Exempel
A. Skapa en databasanvändare baserat på en SQL Server-inloggning
I följande exempel skapas först en SQL Server-inloggning med namnet AbolrousHazem
och skapar sedan en motsvarande databasanvändare AbolrousHazem
i AdventureWorks2022
.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
Ändra till en användardatabas. I SQL Server använder du till exempel instruktionen USE AdventureWorks2022
. I Azure Synapse Analytics and Analytics Platform System (PDW) måste du upprätta en ny anslutning till användardatabasen.
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
B. Skapa en databasanvändare med ett standardschema
I följande exempel skapas först en serverinloggning med namnet WanidaBenshoof
med ett lösenord och skapar sedan en motsvarande databasanvändare Wanida
, med standardschemat Marketing
.
CREATE LOGIN WanidaBenshoof
WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2022;
CREATE USER Wanida FOR LOGIN WanidaBenshoof
WITH DEFAULT_SCHEMA = Marketing;
GO
C. Skapa en databasanvändare från ett certifikat
I följande exempel skapas en databasanvändare JinghaoLiu
från certifikatet CarnationProduction50
.
gäller för: SQL Server 2008 (10.0.x) och senare.
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. Skapa och använda en användare utan inloggning
I följande exempel skapas en databasanvändare CustomApp
som inte mappas till en SQL Server-inloggning. Exemplet ger sedan en användare adventure-works\tengiz0
behörighet att personifiera den CustomApp
användaren.
USE AdventureWorks2022;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;
GO
Om du vill använda autentiseringsuppgifterna för CustomApp
kör användaren adventure-works\tengiz0
följande instruktion.
EXECUTE AS USER = 'CustomApp' ;
GO
Om du vill återgå till autentiseringsuppgifterna för adventure-works\tengiz0
kör användaren följande instruktion.
REVERT ;
GO
E. Skapa en innesluten databasanvändare med lösenord
I följande exempel skapas en innesluten databasanvändare med lösenord. Det här exemplet kan bara köras i en innesluten databas.
gäller för: SQL Server 2012 (11.x) och senare. Det här exemplet fungerar i SQL Database om DEFAULT_LANGUAGE tas bort.
USE AdventureWorks2022;
GO
CREATE USER Carlo
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. Skapa en innesluten databasanvändare för en domäninloggning
I följande exempel skapas en innesluten databasanvändare för en inloggning med namnet Fritz i en domän med namnet Contoso. Det här exemplet kan bara köras i en innesluten databas.
gäller för: SQL Server 2012 (11.x) och senare.
USE AdventureWorks2022;
GO
CREATE USER [Contoso\Fritz] ;
GO
G. Skapa en innesluten databasanvändare med ett specifikt SID
I följande exempel skapas en SQL Server-autentiserad innesluten databasanvändare med namnet CarmenW. Det här exemplet kan bara köras i en innesluten databas.
gäller för: SQL Server 2012 (11.x) och senare.
USE AdventureWorks2022;
GO
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. Skapa en användare för att kopiera krypterade data
I följande exempel skapas en användare som kan kopiera data som skyddas av funktionen Always Encrypted från en uppsättning tabeller, som innehåller krypterade kolumner, till en annan uppsättning tabeller med krypterade kolumner (i samma eller en annan databas). Mer information finns i Migrera känsliga data som skyddas av Always Encrypted.
gäller för: SQL Server 2016 (13.x) och senare SQL Database.
CREATE USER [Chin]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
Jag. Skapa en Microsoft Entra-användare från en Microsoft Entra-inloggning i Azure SQL
Om du vill skapa en Microsoft Entra-användare från en Microsoft Entra-inloggning använder du följande syntax.
Logga in på din logiska server i Azure eller SQL Managed Instance med hjälp av en Microsoft Entra-inloggning som beviljats sysadmin
rollen i SQL Managed Instance eller loginmanager
roll i SQL Database. Följande T-SQL-skript skapar en Microsoft Entra-användare bob@contoso.com
från inloggnings-bob@contoso.com
. Den här inloggningen skapades i CREATE LOGIN exempel.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO
Viktig
När du skapar en USER- från en Microsoft Entra-inloggning anger du user_name som samma login_name från LOGIN.
Det finns stöd för att skapa en Microsoft Entra-användare som en grupp från en Microsoft Entra-inloggning som är en grupp.
CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];
GO
Du kan också skapa en Microsoft Entra-användare från en Microsoft Entra-inloggning som är en grupp.
CREATE USER [bob@contoso.com] FROM LOGIN [MS Entra group];
GO
J. Skapa en innesluten databasanvändare från ett Microsoft Entra-huvudnamn
Följande syntax skapar en Microsoft Entra-användare bob@contoso.com
, i en databas utan en associerad inloggning i master
. Databasmotorn verifierar att den angivna användaren finns i Microsoft Entra.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
K. Skapa en innesluten databasanvändare från ett Microsoft Entra-huvudnamn utan validering
gäller för: SQL-databas i Microsoft Fabric
Exemplen i det här avsnittet skapar databasanvändare för Microsoft Entra-huvudnamn, utan att verifiera huvudnamn i Microsoft Entra.
I följande T-SQL-exempel skapas en databasanvändare för Microsoft Entra-användaren med namnet bob@contoso.com
. Ersätt <unique identifier sid>
med SID för den nya användaren till objekt-ID:t för Microsoft Entra-användaren.
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);
I följande exempel skapas en databasanvändare för Tjänstens huvudnamn för Microsoft Entra med namnet HRApp
. Ersätt <unique identifier sid>
med SID för den nya användaren till klient-ID:t för tjänstens huvudnamn i 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);
I följande exempel skapas en databasanvändare för Microsoft Entra-gruppen med namnet HR
. Ersätt <unique identifier sid>
med SID för den nya användaren till objekt-ID för gruppen.
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);
Nästa steg
När användaren har skapats kan du överväga att lägga till användaren i en databasroll med hjälp av instruktionen ALTER ROLE.
Du kanske också vill BEVILJA objektbehörigheter till rollen så att de kan komma åt tabeller. Allmän information om SQL Server-säkerhetsmodellen finns i Behörigheter.
Relaterat innehåll
- Skapa en databasanvändare
- sys.database_principals (Transact-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- EVENTDATA (Transact-SQL)
- inneslutna databaser
- Ansluta till SQL Database med hjälp av Microsoft Entra-autentisering
- Komma igång med behörigheter för databasmotorn