Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
SQL-databas i Microsoft Fabric
Lägger till en användare i den aktuella databasen. Följande lista visar de 13 användartyperna tillsammans med ett urval av den mest grundläggande syntaxen:
Note
Ä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 služba Active Directory-konto.
CREATE USER [Contoso\test];Användare baserat på en inloggning baserat på en Windows-grupp.
CREATE USER [Contoso\Sales];Användare baserat på en inloggning som använder SQL Server-autentisering.
CREATE USER Mary;Användare baserat på en Microsoft Entra-inloggning.
CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com]Note
Microsoft Entra-serverhuvudkonton (inloggningar) är för närvarande i offentlig förhandsversion för Azure SQL Database.
Note
SQL-databasen i Microsoft Fabric stöder inte inloggningar eller användare baserat på inloggningar.
Användare som autentiserar sig i databasen – Använd inneslutna användare för att göra din databas mer portabel.
Alltid tillåtet i Azure 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\test];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 [test@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\test];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\test];
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 Contoso50; - 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 Contoso09;
Transact-SQL syntaxkonventioner
Syntax
Syntax för SQL Server, Azure SQL Database och 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 och 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
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.
LOGIN 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 satsen CREATE USER är den enda satsen i en SQL-batch stöder Azure SQL Database WITH-klausulenLOGIN. Om satsen CREATE USER inte är den enda satsen i en SQL-batch eller körs i dynamisk SQL, stöds inte WITH-klausulen LOGIN .
MED DEFAULT_SCHEMA = schema_name
Anger det första schema som söks 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å služba Active Directory-användare är begränsade till namn på färre än 21 tecken.
'Microsoft_Entra_principal'
Gäller för: SQL Server 2022 (16.x) och senare versioner, 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-principer kräver syntaxen:CREATE USER
UserPrincipalName för Microsoft Entra-objektet för Microsoft Entra-användare.
CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
Microsoft Entra-serverhuvudkonton (inloggningar) introducerar att skapa användare som är mappade till Microsoft Entra-inloggningar i
masterdatabasen. Till exempelCREATE USER [test@contoso.com] FROM LOGIN [test@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.
Mer information om Microsoft Entra-autentisering i SQL Server finns i Självstudie: Konfigurera Microsoft Entra-autentisering för SQL Server som aktiveras av Azure Arc.
MED LÖSENORD =lösenord
Gäller för: SQL Server 2012 (11.x) och senare versioner, 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) använde SQL Server och Azure SQL Database en SHA-512-hash kombinerad med ett 32-bitars slumpmässigt och unikt salt. Den här metoden gjorde det statistiskt omöjligt för angripare att härleda lösenord.
SQL Server 2025 (17.x) introducerar en itererad hash-algoritm, RFC2898, även kallad en lösenordsbaserad nyckelhärledningsfunktion (PBKDF). Den här algoritmen använder fortfarande SHA-512 men hashar lösenordet flera gånger (100 000 iterationer), vilket avsevärt saktar ner brute-force-attacker. Den här ändringen förbättrar lösenordsskyddet som svar på växande säkerhetshot och hjälper kunderna att följa NIST SP 800-63b-riktlinjerna. Den här säkerhetsförbättringen använder en starkare hashalgoritm, vilket kan öka inloggningstiden något för SQL-autentiseringsinloggningar. Effekten är vanligtvis lägre i miljöer med anslutningspooler, men kan vara mer märkbar i scenarier utan poolning eller där inloggningsfördröjning övervakas noggrant.
UTAN LOGIN
Anger att användaren inte ska mappas till en befintlig inloggning.
CERTIFICATE cert_name
Gäller för: SQL Server 2008 (10.0.x) och senare versioner, SQL Database, SQL-databas i Microsoft Fabric
Anger det certifikat som databasanvändaren skapas för.
ASYMMETRIC KEY asym_key_name
Gäller för: SQL Server 2008 (10.0.x) och senare versioner, SQL Database, SQL-databas 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 versioner, SQL Database
Anger standardspråket för den nya användaren. Om du anger ett standardspråk för användaren och senare ändrar databasens standardspråk, förblir användarens standardspråk som angivet. Om du inte anger ett standardspråk får användaren databasens standardspråk. Om du inte anger ett standardspråk för användaren och senare ändrar databasens standardspråk, ändras användarens standardspråk till det nya standardspråket för databasen.
Important
DEFAULT_LANGUAGE används endast för en innesluten databasanvändare.
SID = sid
Gäller för: SQL Server 2012 (11.x) och senare versioner, samt SQL-databaser i Microsoft Fabric.
I SQL Server 2012 (11.x) och senare versioner gäller endast användare med lösenord (SQL Server-autentisering) i en innesluten databas. Anger SID för den nya databasanvändaren. Om du inte väljer detta alternativ tilldelar SQL Server automatiskt en SID. Använd SID-parametern för att skapa användare i flera databaser som har samma identitet (SID). Denna funktion är användbar när man skapar användare i flera databaser för att förbereda sig för Always On-failover. För att bestämma en användares SID, fråga sys.database_principals.
I SQL-databasen i Microsoft Fabric ska sid vara ett giltigt ID för det angivna Microsoft Entra-huvudkontot. Om huvudpersonen är en användare eller en grupp bör ID:t vara ett Microsoft Entra-objekt-ID för användaren eller gruppen. Om Microsoft Entra-principen är en tjänsteprincip (en applikation eller en hanterad identitet), bör ID:t vara ett applikations-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. Om du använder argumentet SID måste du inkludera TYPE.
TYPE = [ E | X ]
Gäller för: SQL-databas i Microsoft Fabric och Azure SQL Database.
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 | AV ]
Gäller för: SQL Server 2016 (13.x) och senare versioner, 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.
Warning
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 LEVERANTÖR
Gäller för: SQL Server 2022 (16.x) och senare versioner, SQL Database, Azure SQL Managed Instance, SQL-databas i Microsoft Fabric
Anger att huvudnamnet är för Microsoft Entra-autentisering. SQL Server verifierar automatiskt det angivna huvudnamnet i Microsoft Entra.
Om huvudpersonen som utfärdar uttalandet CREATE USER är en Microsoft Entra-användarprincip, måste huvudpersonen eller huvudpersonens grupp ha Katalogläsarrollen 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 kan du inte använda FROM EXTERNAL PROVIDER om en principal som utfärdar CREATE USER en tjänsteprincip 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 Server 2025 (17.x) och senare versioner, SQL Database, Azure SQL Managed Instance, SQL-databas i Microsoft Fabric
Anger Microsoft Entra-objekt-ID. Om du anger OBJECT_ID, kan det user_name vara ett användardefinierat alias bildat från det ursprungliga huvudvisningsnamnet med ett tillägg. User_name måste vara ett unikt namn i sys.database_principals-vyn och följa alla andra sysname begränsningar. För mer information om att använda alternativetWITH OBJECT_ID, se Microsoft Entra-inloggningar och användare med icke-unika visningsnamn.
Note
Från och med SQL Server 2025 (17.x) WITH OBJECT_ID stöds alternativet för Microsoft Entra-inloggningar och användare med unika visningsnamn.
Om tjänstehuvudets visningsnamn inte är en dubblett, använd standardsatsen CREATE LOGIN eller CREATE USER . Tillägget WITH OBJECT_ID är ett felsökningsreparationsobjekt som implementerats för användning med icke-substantiv tjänsthuvudnamn. Det rekommenderas inte att använda det med ett unikt tjänsthuvudkonto.
WITH OBJECT_ID Att använda tillägget för ett huvudnamn för tjänsten utan att lägga till ett suffix körs, men det är inte uppenbart vilket tjänsthuvudnamn som inloggningen eller användaren skapades för. Det rekommenderas att skapa ett alias genom att använda ett suffix för att unikt identifiera tjänstehuvudpersonen.
Remarks
Om du utelämnar FOR LOGIN, mappas den nya databasanvändaren till SQL Server-inloggningen med samma namn.
Standardschemat är det första schemat som servern söker efter när den löser upp namnen på objekt för denna databasanvändare. Om inget annat anges är standardschemat ägare till objekt som skapats av den här databasanvändaren.
Om användaren har ett standardschema använder servern det standardschemat. Om användaren inte har ett standardschema men är medlem i en grupp som har ett standardschema, använder servern gruppens standardschema. Om användaren inte har ett standardschema och tillhör flera grupper, använder servern det konfigurerade standardschemat för Windows-gruppen med lägst principal_id bland grupper som har ett explicit inställt standardschema. Du kan inte uttryckligen välja ett av de tillgängliga standardschemana som föredraget schema. Om servern inte kan bestämma ett standardschema för en användare använder den schemat dbo .
Du kan ställa DEFAULT_SCHEMA in innan du skapar det schema som det pekar på.
Du kan inte specificera DEFAULT_SCHEMA när du skapar en användare mappad till ett certifikat eller en asymmetrisk nyckel.
Servern ignorerar värdet av DEFAULT_SCHEMA om användaren är medlem i den sysadmin fasta serverrollen. Alla medlemmar i den sysadmin fasta serverrollen har ett standardschema för dbo.
Klausulen WITHOUT LOGIN skapar en användare som inte är mappad till en SQL-autentiserad inloggning. Den kan ansluta till andra databaser som gäst. Du kan tilldela behörigheter till denna användare utan inloggning. När säkerhetskontexten ändras till en användare utan inloggning får den ursprungliga användaren behörigheterna från användaren utan inloggning. För ett exempel, se D. Skapa och använda en användare utan inloggning.
Endast användare som mappas till Windows-huvudnamn kan innehålla omvänt snedstreck (\).
Du kan inte använda CREATE USER 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 CONNECT behörighet, som visas:
GRANT CONNECT TO guest;
GO
Du kan se information om databasanvändare i sys.database_principals katalogvy.
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. Genom att använda Microsoft Entra-inloggningar kan du mappa databasnivå-Microsoft Entra-principer till servernivå-inloggningar för Microsoft Entra. För att skapa en Microsoft Entra-användare från en Microsoft Entra-inloggning, använd 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 användningen av klausulen FROM EXTERNAL PROVIDER endast en Microsoft Entra-användare utan inloggning i databasenmaster. Till exempel skapar följande kommando en innesluten användare:
CREATE USER [test@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\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
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.
Important
Den här syntaxen ger användarna åtkomst till databasen och ger även ny åtkomst till databasmotorn.
CREATE USER [Domain1\WindowsUserTest]CREATE USER [Domain1\WindowsGroupManagers]CREATE USER Test WITH PASSWORD = '<strong password>'
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\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]
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 LOGINCREATE USER CERTUSER FOR CERTIFICATE SpecialCertCREATE USER CERTUSER FROM CERTIFICATE SpecialCertCREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKeyCREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey
Security
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. För att byta en databasanvändare från en användare baserad på en SQL-autentiserad inloggning till en innesluten databasanvändare med lösenord, se 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 användare av SQL Server 2022 (16.x), Azure SQL Database, Azure SQL Managed Instance och Azure Synapse Analytics innehållna databasanvändare stöder SSMS multifaktorautentisering. Mer information finns i Använda Microsoft Entra multifaktorautentisering.
Permissions
Kräver ÄNDRAT ALLA USER tillstånd i databasen.
Behörigheter för SQL Server 2022 och senare versioner
Kräver CREATE USER behörighet för databasen.
Examples
A. Skapa en databasanvändare baserat på en SQL Server-inloggning
Följande exempel skapar först en SQL Server-inloggning med namnet test i databasenmaster, och skapar sedan en motsvarande databasanvändare test i AdventureWorks2025.
--Connect to the master database
CREATE LOGIN test
WITH PASSWORD = '<strong password>';
Ändra till en användardatabas. I SQL Server använder du till exempel instruktionen USE [AdventureWorks2022]. I Azure SQL Database är satsen USE inte tillgänglig. Koppla istället direkt till den avsedda databasen och kör resten av kodprovet. Detta inloggningsbaserade exempel gäller inte SQL-databasen i Microsoft Fabric, som inte stödjer inloggningar eller användare baserade på inloggningar.
--Connect to a user database
CREATE USER test FOR LOGIN test;
GO
B. Skapa en databasanvändare med ett standardschema
Följande exempel skapar först en serverinloggning med ett lösenord testlogin du angår, och skapar sedan en motsvarande databasanvändare testuser, med standardschemat Marketing.
--Connect to the master database
CREATE LOGIN testlogin
WITH PASSWORD = '<strong password>';
Ändra till en användardatabas. I SQL Server använder du till exempel instruktionen USE [AdventureWorks2022]. I Azure SQL Database och SQL-databas i Microsoft Fabric är satsen USE inte tillgänglig. Koppla istället direkt till den avsedda databasen och kör resten av kodprovet.
--Connect to a user database
CREATE USER testuser FOR LOGIN testlogin
WITH DEFAULT_SCHEMA = Marketing;
C. Skapa en databasanvändare från ett certifikat
I följande exempel skapas en databasanvändare test från certifikatet Contoso_Cert. Mer information finns i 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. 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\test behörighet att personifiera den CustomApp användaren.
USE AdventureWorks2022;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\test] ;
GO
Om du vill använda autentiseringsuppgifterna för CustomApp kör användaren adventure-works\test följande instruktion.
EXECUTE AS USER = 'CustomApp' ;
GO
Om du vill återgå till autentiseringsuppgifterna för adventure-works\test 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. Du kan köra detta exempel endast i en innesluten databas.
Detta exempel fungerar i SQL Database om du tar bort DEFAULT_LANGUAGE.
USE AdventureWorks2022;
GO
CREATE USER test
WITH PASSWORD='<password>'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. Skapa en användare av en innesluten databas för en domäninloggning
Följande exempel skapar en innesluten databasanvändare för en inloggning med namnet test i en domän med namnet Contoso. Du kan köra detta exempel endast i en innesluten databas.
USE AdventureWorks2022;
GO
CREATE USER [Contoso\test] ;
GO
G. Skapa en innesluten databasanvändare med en specifik SID
Följande exempel skapar en SQL Server-autentiserad innesluten databasanvändare med namnet TestUser. Du kan köra detta exempel endast i en innesluten databas.
USE AdventureWorks2022;
GO
CREATE USER TestUser WITH PASSWORD = '<strong password>'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. Skapa en användare för att kopiera krypterad 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 versioner, SQL Database.
CREATE USER [test]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
I. Skapa en Microsoft Entra-användare från en Microsoft Entra-inloggning i Azure SQL Database och Azure SQL Managed Instance
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 SQL Database eller SQL Managed Instance med en Microsoft Entra-inloggning. Använd serveradministratörsinloggningen eller en inloggning som är medlem i loginmanager rollen i SQL Database, eller som har beviljats sysadmin rollen i SQL Managed Instance.
Följande T-SQL-skript skapar en Microsoft Entra-användare test@contoso.comfrån inloggnings-test@contoso.com. Denna inloggning skapades i exemplet CREATE LOGIN .
CREATE USER [test@contoso.com] FROM LOGIN [test@contoso.com];
GO
Important
När du skapar en USER från en Microsoft Entra inloggning, ange 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 [test@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 test@contoso.com, i en databas utan en associerad inloggning i master. Databasmotorn verifierar att den angivna användaren finns i Microsoft Entra.
CREATE USER [test@contoso.com] FROM EXTERNAL PROVIDER;
GO
I SQL-databasen i Microsoft Fabric kan du inte använda FROM EXTERNAL PROVIDER om en principal som utfärdar CREATE USER en tjänsteprincip i Microsoft Entra.
K. Skapa en innesluten databasanvändare från ett Microsoft Entra-huvudnamn utan validering
Gäller för: SQL-databas i Microsoft Fabric och Azure SQL Database
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 test@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 = '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);
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.
Note
Använd klient-ID:t, inte objekt-ID:t, när du specificerar en Microsoft Entra tjänsteprincip, User-Assigned Managed Identity (UAMI) eller 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);
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 @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);
Relaterat innehåll
- Skapa en databasanvändare
- sys.database_principals (Transact-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- HÄNDELSEDATA (Transact-SQL)
- inneslutna databaser
- Microsoft Entra-autentisering för Azure SQL
- Kom igång med behörigheter för databasmotorn
- ALTER ROLE (Transact-SQL)
- GRANT objektbehörigheter (Transact-SQL)
- Behörigheter (Database Engine)