Sdílet prostřednictvím


ALTER USER (Transact-SQL)

Přejmenuje uživatele databáze nebo změní výchozí schéma.

Transact-SQL konvence syntaxe

Poznámka

Microsoft Entra ID se dříve označovala jako Azure Active Directory (Azure AD).

Výběr produktu

V následujícím řádku vyberte název produktu, který vás zajímá, a zobrazí se jenom informace o daném produktu.

* SQL Server *  

SQL Database

spravované instance SQL

 

SQL Server

Syntax

-- Syntax for SQL Server

ALTER USER userName
 WITH <set_item> [ ,...n ]
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

Argumenty

userName Určuje jméno, podle kterého je uživatel identifikován uvnitř této databáze.

LOGIN =loginName Přemapuje uživatele na jiné přihlášení změnou identifikátoru zabezpečení uživatele (SID) tak, aby odpovídal identifikátoru SID přihlášení.

NAME =newUserName Určuje nový název tohoto uživatele. newUserName již nesmí v aktuální databázi nastat.

DEFAULT_SCHEMA = { schemaName | NULL } Určuje první schéma, které bude prohledáno serverem při překladu názvů objektů pro tohoto uživatele. Nastavení výchozího schématu na hodnotu NULL odebere výchozí schéma ze skupiny Windows. Možnost NULL nelze použít s uživatelem systému Windows.

HESLO =hesloplatí pro: SQL Server 2012 (11.x) a novější, SQL Database.

Určuje heslo pro uživatele, který se mění. V heslech se rozlišují malá a velká písmena.

Poznámka

Tato možnost je dostupná jenom pro uživatele s omezením. Další informace naleznete v tématu obsažené databáze a sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD ="oldpassword"platí pro: SQL Server 2012 (11.x) a novější, SQL Database.

Aktuální uživatelské heslo, které bude nahrazeno "heslo". V heslech se rozlišují malá a velká písmena. OLD_PASSWORD je nutné změnit heslo, pokud nemáte ALTER ANY USER oprávnění. Vyžadování OLD_PASSWORD zabrání uživatelům s oprávněním zosobnění změnit heslo.

Poznámka

Tato možnost je dostupná jenom pro uživatele s omezením.

DEFAULT_LANGUAGE ={ NONE | <lcid> | <název jazyka> | <jazyk alias> }platí pro: SQL Server 2012 (11.x) a novější.

Určuje výchozí jazyk, který se má uživateli přiřadit. Pokud je tato možnost nastavena na HODNOTU NONE, výchozí jazyk je nastaven na aktuální výchozí jazyk databáze. Pokud se později změní výchozí jazyk databáze, zůstane výchozí jazyk uživatele beze změny. DEFAULT_LANGUAGE může být místní ID (lcid), název jazyka nebo alias jazyka.

Poznámka

Tuto možnost lze zadat pouze v databázi s omezením a pouze pro uživatele s omezením.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] platí pro: SQL Server 2016 (13.x) a novější, SQL Database.

Potlačí kontroly kryptografických metadat na serveru v operacích hromadného kopírování. To uživateli umožňuje hromadně kopírovat šifrovaná data mezi tabulkami nebo databázemi bez dešifrování dat. Výchozí hodnota je VYPNUTÁ.

Varování

Nesprávné použití této možnosti může vést k poškození dat. Další informace najdete v tématu Migrace citlivých dat chráněných funkcí Always Encrypted.

Poznámky

Výchozí schéma bude prvním schématem, které bude server prohledávat při překladu názvů objektů pro tohoto uživatele databáze. Pokud neurčíte jinak, výchozí schéma bude vlastníkem objektů vytvořených tímto uživatelem databáze.

Pokud má uživatel výchozí schéma, použije se toto výchozí schéma. Pokud uživatel nemá výchozí schéma, ale uživatel je členem skupiny, která má výchozí schéma, použije se výchozí schéma skupiny. Pokud uživatel nemá výchozí schéma a je členem více než jedné skupiny, bude výchozím schématem pro uživatele skupina Windows s nejnižšími principal_id a explicitně nastaveným výchozím schématem. Pokud pro uživatele nelze určit žádné výchozí schéma, použije se schéma dbo.

DEFAULT_SCHEMA lze nastavit na schéma, které v databázi aktuálně nedochází. Proto můžete uživateli přiřadit DEFAULT_SCHEMA před vytvořením schématu.

DEFAULT_SCHEMA nelze zadat pro uživatele, který je namapovaný na certifikát nebo asymetrický klíč.

Důležitý

Hodnota DEFAULT_SCHEMA se ignoruje, pokud je uživatel členem správce systému pevné role serveru. Všichni členové pevné role serveru mají výchozí schéma dbo.

Jméno uživatele, který je namapovaný na přihlašovací jméno nebo skupinu systému Windows, můžete změnit pouze v případech, kdy identifikátor SID nového uživatelského jména odpovídá identifikátoru SID zaznamenanému v databázi. Tato kontrola pomáhá zabránit falšování identity přihlášení windows v databázi.

Klauzule WITH LOGIN umožňuje přemapování uživatele na jiné přihlášení. Uživatelé bez přihlášení, uživatelé namapovaní na certifikát nebo uživatelé mapovaní na asymetrický klíč se s touto klauzulí nedají znovu namapovat. Přemapovat je možné jenom uživatele SQL a uživatele Windows (nebo skupiny). Klauzule WITH LOGIN se nedá použít ke změně typu uživatele, například ke změně účtu Systému Windows na přihlášení k SQL Serveru.

Neshoda identifikátoru SID může nastat, když jste obnovili databázi z jiného serveru a namapovali uživatele databáze na přihlášení k SQL Serveru. K opravě této situace můžete použít klauzuli WITH LOGIN nahrazením identifikátoru SID uživatele v databázi identifikátorem SID pro přihlášení ze serveru.

Pokud jsou splněny následující podmínky, jméno uživatele se automaticky přejmenuje na přihlašovací jméno.

  • Uživatel je uživatel systému Windows.

  • Název je název Systému Windows (obsahuje zpětné lomítko).

  • Nebyl zadán žádný nový název.

  • Aktuální název se liší od přihlašovacího jména.

Jinak se uživatel nepřejmenuje, pokud volající navíc nevyvolá klauzuli NAME.

Jméno uživatele namapovaného na přihlašovací jméno SQL Serveru, certifikát nebo asymetrický klíč nemůže obsahovat znak zpětného lomítka (\).

Opatrnost

Počínaje SQL Serverem 2005 se změnilo chování schémat. Výsledkem je, že kód, který předpokládá, že schémata jsou ekvivalentní uživatelům databáze, už nemusí vracet správné výsledky. Stará zobrazení katalogu, včetně objektů sysobject, by neměla být použita v databázi, ve které byly použity některé z následujících příkazů DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. V takových databázích musíte místo toho použít nová zobrazení katalogu. Nová zobrazení katalogu berou v úvahu oddělení objektů zabezpečení a schémat zavedených v SYSTÉMU SQL Server 2005. Další informace o zobrazeních katalogu naleznete v tématu Zobrazení katalogu (Transact-SQL).

Bezpečnost

Poznámka

Uživatel, který má ALTER ANY USER oprávnění, může změnit výchozí schéma libovolného uživatele. Uživatel, který má změněné schéma, může neúmyslně vybrat data z nesprávné tabulky nebo spustit kód z nesprávného schématu.

Dovolení

Chcete-li změnit jméno uživatele, vyžaduje ALTER ANY USER oprávnění.

Ke změně cílového přihlášení uživatele se vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit uživatelské jméno uživatele, který má oprávnění CONTROL k databázi, vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit výchozí schéma nebo jazyk, vyžaduje oprávnění ALTER pro uživatele. Uživatelé můžou změnit vlastní výchozí schéma nebo jazyk.

Příklady

Všechny příklady se spouští v uživatelské databázi.

A. Změna názvu uživatele databáze

Následující příklad změní název uživatele databáze Mary5 na Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B. Změna výchozího schématu uživatele

Následující příklad změní výchozí schéma uživatele Mary51 na Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C. Změna několika možností najednou

Následující příklad změní několik možností pro uživatele databáze s omezením v jednom příkazu.

platí pro: SQL Server 2012 (11.x) a novější.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO

D. Oprava neshodovaného identifikátoru SID

Následující příklad opraví identifikátor SID uživatele v databázi tak, aby odpovídal identifikátoru SID na serveru pro ověřené přihlášení k SQL Serveru.

ALTER USER Mai
WITH LOGIN = Mai;
GO

Viz také

* Azure SQL Database a SQL Database v prostředcích infrastruktury *

spravované instance SQL

 

Azure SQL Database a databáze SQL v Microsoft Fabric

Syntax

Syntaxe pro Azure SQL Database

-- Syntax for Azure SQL Database

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = schemaName
| LOGIN = loginName
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]

-- Azure SQL Database Update Syntax
ALTER USER userName
 WITH <set_item> [ ,...n ]
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

-- SQL Database syntax when connected to a federation member
ALTER USER userName
 WITH <set_item> [ ,... n ]
[;]

<set_item> ::=
 NAME = newUserName

Syntaxe pro databázi SQL v Microsoft Fabric

ALTER USER   
    {  
    Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid'] 
    }  
 [ ; ]  

-- Users that cannot authenticate   
ALTER USER user_name   
    {  
         { FOR | FROM } CERTIFICATE cert_name   
       | { FOR | FROM } ASYMMETRIC KEY asym_key_name   
    }  
 [ ; ]  

<options_list> ::=  
    DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }   

-- SQL Database syntax when connected to a federation member  
ALTER USER user_name
[;]

Argumenty

uživatelské jméno

Určuje jméno, podle kterého je uživatel identifikován uvnitř této databáze.

PŘIHLÁŠENÍ =loginName

Znovu namapuje uživatele na jiné přihlášení změnou identifikátoru zabezpečení uživatele (SID) tak, aby odpovídal identifikátoru SID přihlášení.

Pokud je příkaz ALTER USER jediným příkazem v dávce SQL, Azure SQL Database podporuje klauzuli WITH LOGIN. Pokud příkaz ALTER USER není jediným příkazem v dávce SQL nebo se provádí v dynamickém SQL, klauzule WITH LOGIN se nepodporuje.

NÁZEV =newUserName

Určuje nový název tohoto uživatele. newUserName již nesmí v aktuální databázi nastat.

DEFAULT_SCHEMA = { schemaName | NULL }

Určuje první schéma, které bude prohledávat server při překladu názvů objektů pro tohoto uživatele. Nastavení výchozího schématu na hodnotu NULL odebere výchozí schéma ze skupiny Windows. Možnost NULL nelze použít s uživatelem systému Windows.

= heslahesla

platí pro: SQL Database.

Určuje heslo pro uživatele, který se mění. V heslech se rozlišují malá a velká písmena.

Poznámka

Tato možnost je dostupná jenom pro uživatele s omezením. Další informace naleznete v tématu obsažené databáze a sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD ="oldpassword"

platí pro: SQL Database.

Aktuální uživatelské heslo, které bude nahrazeno "heslo". V heslech se rozlišují malá a velká písmena. OLD_PASSWORD je nutné změnit heslo, pokud nemáte ALTER ANY USER oprávnění. Vyžadování OLD_PASSWORD zabrání uživatelům s oprávněním zosobnění změnit heslo.

Poznámka

Tato možnost je dostupná jenom pro uživatele s omezením.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

platí pro: SQL Server 2016 (13.x) a novější, SQL Database.

Potlačí kontroly kryptografických metadat na serveru v operacích hromadného kopírování. To uživateli umožňuje hromadně kopírovat šifrovaná data mezi tabulkami nebo databázemi bez dešifrování dat. Výchozí hodnota je VYPNUTÁ.

Varování

Nesprávné použití této možnosti může vést k poškození dat. Další informace najdete v tématu Migrace citlivých dat chráněných funkcí Always Encrypted.

Poznámky

Výchozí schéma bude prvním schématem, které bude server prohledávat při překladu názvů objektů pro tohoto uživatele databáze. Pokud neurčíte jinak, výchozí schéma bude vlastníkem objektů vytvořených tímto uživatelem databáze.

Pokud má uživatel výchozí schéma, použije se toto výchozí schéma. Pokud uživatel nemá výchozí schéma, ale uživatel je členem skupiny, která má výchozí schéma, použije se výchozí schéma skupiny. Pokud uživatel nemá výchozí schéma a je členem více než jedné skupiny, bude výchozím schématem pro uživatele skupina Windows s nejnižšími principal_id a explicitně nastaveným výchozím schématem. Pokud pro uživatele nelze určit žádné výchozí schéma, použije se schéma dbo.

DEFAULT_SCHEMA lze nastavit na schéma, které v databázi aktuálně nedochází. Proto můžete uživateli přiřadit DEFAULT_SCHEMA před vytvořením schématu.

DEFAULT_SCHEMA nelze zadat pro uživatele, který je namapovaný na certifikát nebo asymetrický klíč.

Důležitý

Hodnota DEFAULT_SCHEMA se ignoruje, pokud je uživatel členem správce systému pevné role serveru. Všichni členové pevné role serveru mají výchozí schéma dbo.

Jméno uživatele, který je namapovaný na přihlašovací jméno nebo skupinu systému Windows, můžete změnit pouze v případech, kdy identifikátor SID nového uživatelského jména odpovídá identifikátoru SID zaznamenanému v databázi. Tato kontrola pomáhá zabránit falšování identity přihlášení windows v databázi.

Klauzule WITH LOGIN umožňuje přemapování uživatele na jiné přihlášení. Uživatelé bez přihlášení, uživatelé namapovaní na certifikát nebo uživatelé mapovaní na asymetrický klíč se s touto klauzulí nedají znovu namapovat. Přemapovat je možné jenom uživatele SQL a uživatele Windows (nebo skupiny). Klauzule WITH LOGIN se nedá použít ke změně typu uživatele, například ke změně účtu Systému Windows na přihlášení k SQL Serveru.

Pokud jsou splněny následující podmínky, jméno uživatele se automaticky přejmenuje na přihlašovací jméno.

  • Uživatel je uživatel systému Windows.

  • Název je název Systému Windows (obsahuje zpětné lomítko).

  • Nebyl zadán žádný nový název.

  • Aktuální název se liší od přihlašovacího jména.

Jinak se uživatel nepřejmenuje, pokud volající navíc nevyvolá klauzuli NAME.

Jméno uživatele namapovaného na přihlašovací jméno SQL Serveru, certifikát nebo asymetrický klíč nemůže obsahovat znak zpětného lomítka (\).

Opatrnost

Počínaje SQL Serverem 2005 se změnilo chování schémat. Výsledkem je, že kód, který předpokládá, že schémata jsou ekvivalentní uživatelům databáze, už nemusí vracet správné výsledky. Stará zobrazení katalogu, včetně objektů sysobject, by neměla být použita v databázi, ve které byly použity některé z následujících příkazů DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. V takových databázích musíte místo toho použít nová zobrazení katalogu. Nová zobrazení katalogu berou v úvahu oddělení objektů zabezpečení a schémat zavedených v SYSTÉMU SQL Server 2005. Další informace o zobrazeních katalogu naleznete v tématu Zobrazení katalogu (Transact-SQL).

Bezpečnost

Poznámka

Uživatel, který má ALTER ANY USER oprávnění, může změnit výchozí schéma libovolného uživatele. Uživatel, který má změněné schéma, může neúmyslně vybrat data z nesprávné tabulky nebo spustit kód z nesprávného schématu.

Dovolení

Chcete-li změnit jméno uživatele, vyžaduje ALTER ANY USER oprávnění.

Ke změně cílového přihlášení uživatele se vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit uživatelské jméno uživatele, který má oprávnění CONTROL k databázi, vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit výchozí schéma nebo jazyk, vyžaduje oprávnění ALTER pro uživatele. Uživatelé můžou změnit vlastní výchozí schéma nebo jazyk.

Příklady

Všechny příklady se spouští v uživatelské databázi.

A. Změna názvu uživatele databáze

Následující příklad změní název uživatele databáze Mary5 na Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B. Změna výchozího schématu uživatele

Následující příklad změní výchozí schéma uživatele Mary51 na Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C. Změna několika možností najednou

Následující příklad změní několik možností pro uživatele databáze s omezením v jednom příkazu.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per';
GO

Viz také

SQL Database

* SQL Managed Instance *

 

Spravovaná instance Azure SQL

Syntax

Důležitý

Při použití uživatelů s přihlášeními k Microsoft Entra jsou podporovány pouze následující možnosti pro azure SQL Managed Instance: DEFAULT_SCHEMA = { schemaName | NULL } a DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }

Přidání nového rozšíření syntaxe, které pomáhá přemapovat uživatele v databázi, která byla migrována do azure SQL Managed Instance. Syntaxe ALTER USER pomáhá mapovat uživatele databáze v federované a synchronizované doméně s ID Microsoft Entra na přihlášení Microsoft Entra.

-- Syntax for SQL Managed Instance
ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:

/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/

ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

<set_item> ::=
 NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

Argumenty

userName Určuje jméno, podle kterého je uživatel identifikován uvnitř této databáze.

LOGIN =loginName Přemapuje uživatele na jiné přihlášení změnou identifikátoru zabezpečení uživatele (SID) tak, aby odpovídal identifikátoru SID přihlášení.

Pokud je příkaz ALTER USER jediným příkazem v dávce SQL, Azure SQL Database podporuje klauzuli WITH LOGIN. Pokud příkaz ALTER USER není jediným příkazem v dávce SQL nebo se provádí v dynamickém SQL, klauzule WITH LOGIN se nepodporuje.

NAME =newUserName Určuje nový název tohoto uživatele. newUserName již nesmí v aktuální databázi nastat.

DEFAULT_SCHEMA = { schemaName | NULL } Určuje první schéma, které bude prohledáno serverem při překladu názvů objektů pro tohoto uživatele. Nastavení výchozího schématu na hodnotu NULL odebere výchozí schéma ze skupiny Windows. Možnost NULL nelze použít s uživatelem systému Windows.

= heslahesla

Určuje heslo pro uživatele, který se mění. V heslech se rozlišují malá a velká písmena.

Poznámka

Tato možnost je dostupná jenom pro uživatele s omezením. Další informace naleznete v tématu obsažené databáze a sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD ="oldpassword"

Aktuální uživatelské heslo, které bude nahrazeno "heslo". V heslech se rozlišují malá a velká písmena. OLD_PASSWORD je nutné změnit heslo, pokud nemáte ALTER ANY USER oprávnění. Vyžadování OLD_PASSWORD zabrání uživatelům s oprávněním zosobnění změnit heslo.

Poznámka

Tato možnost je dostupná jenom pro uživatele s omezením.

DEFAULT_LANGUAGE ={ NONE | <lcid> | <název jazyka> | <alias jazyka> }

Určuje výchozí jazyk, který se má uživateli přiřadit. Pokud je tato možnost nastavena na HODNOTU NONE, výchozí jazyk je nastaven na aktuální výchozí jazyk databáze. Pokud se později změní výchozí jazyk databáze, zůstane výchozí jazyk uživatele beze změny. DEFAULT_LANGUAGE může být místní ID (lcid), název jazyka nebo alias jazyka.

Poznámka

Tuto možnost lze zadat pouze v databázi s omezením a pouze pro uživatele s omezením.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

Potlačí kontroly kryptografických metadat na serveru v operacích hromadného kopírování. To uživateli umožňuje hromadně kopírovat šifrovaná data mezi tabulkami nebo databázemi bez dešifrování dat. Výchozí hodnota je VYPNUTÁ.

Varování

Nesprávné použití této možnosti může vést k poškození dat. Další informace najdete v tématu Migrace citlivých dat chráněných funkcí Always Encrypted.

Poznámky

Výchozí schéma bude prvním schématem, které bude server prohledávat při překladu názvů objektů pro tohoto uživatele databáze. Pokud neurčíte jinak, výchozí schéma bude vlastníkem objektů vytvořených tímto uživatelem databáze.

Pokud má uživatel výchozí schéma, použije se toto výchozí schéma. Pokud uživatel nemá výchozí schéma, ale uživatel je členem skupiny, která má výchozí schéma, použije se výchozí schéma skupiny. Pokud uživatel nemá výchozí schéma a je členem více než jedné skupiny, bude výchozím schématem pro uživatele skupina Windows s nejnižšími principal_id a explicitně nastaveným výchozím schématem. Pokud pro uživatele nelze určit žádné výchozí schéma, použije se schéma dbo.

DEFAULT_SCHEMA lze nastavit na schéma, které v databázi aktuálně nedochází. Proto můžete uživateli přiřadit DEFAULT_SCHEMA před vytvořením schématu.

DEFAULT_SCHEMA nelze zadat pro uživatele, který je namapovaný na certifikát nebo asymetrický klíč.

Důležitý

Hodnota DEFAULT_SCHEMA se ignoruje, pokud je uživatel členem správce systému pevné role serveru. Všichni členové pevné role serveru mají výchozí schéma dbo.

Jméno uživatele, který je namapovaný na přihlašovací jméno nebo skupinu systému Windows, můžete změnit pouze v případech, kdy identifikátor SID nového uživatelského jména odpovídá identifikátoru SID zaznamenanému v databázi. Tato kontrola pomáhá zabránit falšování identity přihlášení windows v databázi.

Klauzule WITH LOGIN umožňuje přemapování uživatele na jiné přihlášení. Uživatelé bez přihlášení, uživatelé namapovaní na certifikát nebo uživatelé mapovaní na asymetrický klíč se s touto klauzulí nedají znovu namapovat. Přemapovat je možné jenom uživatele SQL a uživatele Windows (nebo skupiny). Klauzule WITH LOGIN se nedá použít ke změně typu uživatele, například ke změně účtu Systému Windows na přihlášení k SQL Serveru. Jedinou výjimkou je změna uživatele systému Windows na uživatele Microsoft Entra.

Poznámka

Následující pravidla se nevztahují na uživatele Windows ve službě Azure SQL Managed Instance, protože nepodporujeme vytváření přihlášení windows ve službě Azure SQL Managed Instance. Možnost WITH LOGIN lze použít pouze v případě, že jsou k dispozici přihlášení Microsoft Entra.

Pokud jsou splněny následující podmínky, jméno uživatele se automaticky přejmenuje na přihlašovací jméno.

  • Uživatel je uživatel systému Windows.

  • Název je název Systému Windows (obsahuje zpětné lomítko).

  • Nebyl zadán žádný nový název.

  • Aktuální název se liší od přihlašovacího jména.

Jinak se uživatel nepřejmenuje, pokud volající navíc nevyvolá klauzuli NAME.

Jméno uživatele namapovaného na přihlašovací jméno SQL Serveru, certifikát nebo asymetrický klíč nemůže obsahovat znak zpětného lomítka (\).

Opatrnost

Počínaje SQL Serverem 2005 se změnilo chování schémat. Výsledkem je, že kód, který předpokládá, že schémata jsou ekvivalentní uživatelům databáze, už nemusí vracet správné výsledky. Stará zobrazení katalogu, včetně objektů sysobject, by neměla být použita v databázi, ve které byly použity některé z následujících příkazů DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. V takových databázích musíte místo toho použít nová zobrazení katalogu. Nová zobrazení katalogu berou v úvahu oddělení objektů zabezpečení a schémat zavedených v SYSTÉMU SQL Server 2005. Další informace o zobrazeních katalogu naleznete v tématu Zobrazení katalogu (Transact-SQL).

Poznámky pro uživatele Windows v místním SQL migrovaném do Azure SQL Managed Instance

Tyto poznámky platí pro ověřování jako uživatelé Windows, kteří byli federovaní a synchronizovaní s Microsoft Entra ID.

  • Ověřování uživatelů nebo skupin Windows mapovaných na ID Microsoft Entra se ve výchozím nastavení provádí prostřednictvím rozhraní Graph API ve všech verzích syntaxe ALTER USER, které se používají pro účely migrace.
  • Místní uživatelé, kteří byli aliasovaní (používají jiný název než původní účet Windows), budou název aliasu uchovávat.
  • U ověřování Microsoft Entra platí parametr LOGIN pouze pro službu Azure SQL Managed Instance a nejde ho použít se službou SQL Database.
  • Pokud chcete zobrazit přihlášení pro objekty zabezpečení Microsoft Entra, použijte následující příkaz:

select * from sys.server_principals.

  • Zkontrolujte, jestli je zadaný typ přihlášení E nebo X.
  • Možnost HESLO nelze použít pro uživatele Microsoft Entra.
  • Ve všech případech migrace se role a oprávnění uživatelů nebo skupin Windows automaticky přenesou do nových uživatelů nebo skupin Microsoft Entra.
  • Nové rozšíření syntaxe, FROM EXTERNAL PROVIDER je k dispozici pro změnu uživatelů a skupin Windows z místního SQL na uživatele a skupiny Microsoft Entra. Doména Windows musí být federovaná s ID Microsoft Entra a všichni členové domény Systému Windows musí existovat v Microsoft Entra ID při použití tohoto rozšíření. Syntaxe FROM EXTERNAL PROVIDER platí pro spravovanou instanci Azure SQL a měla by se použít v případě, že uživatelé Windows nemají přihlášení k původní instanci SQL a musí být namapováni na samostatné uživatele databáze Microsoft Entra.
  • V tomto případě může být povolené uživatelské jméno:
  • A Widows user (domain\user).
  • Skupina Windows (MyWindowsGroup).
  • Alias Windows (MyWindowsAlias).
  • Výsledek příkazu ALTER nahradí starý název userName odpovídajícím názvem, který se nachází v Microsoft Entra ID na základě původního identifikátoru SID starého userName. Změněný název se nahradí a uloží v metadatech databáze:
  • (doména\uživatel) bude nahrazena microsoft Entra user@domain.com.
  • (doména\MyWindowsGroup) bude nahrazena skupinou Microsoft Entra.
  • (MyWindowsAlias) zůstane beze změny, ale identifikátor SID tohoto uživatele bude vrácen se změnami v Microsoft Entra ID.

Poznámka

Pokud identifikátor SID původního uživatele převedeného na objectID nelze najít v Microsoft Entra ID, příkaz ALTER USER selže.

  • Pokud chcete zobrazit změněné uživatele, použijte následující příkaz: select * from sys.database_principals
  • Zkontrolujte zadaný typ uživatele E nebo X.
  • Pokud se k migraci uživatelů Systému Windows na uživatele Microsoft Entra používá název, platí následující omezení:
  • Je nutné zadat platné PŘIHLÁŠENÍ.
  • Název bude vrácen se změnami v MICROSOFT Entra ID a může být pouze:
  • Název PŘIHLÁŠENÍ.
  • Alias – název nemůže existovat v ID Microsoft Entra.
  • Ve všech ostatních případech syntaxe selže.

Bezpečnost

Poznámka

Uživatel, který má ALTER ANY USER oprávnění, může změnit výchozí schéma libovolného uživatele. Uživatel, který má změněné schéma, může neúmyslně vybrat data z nesprávné tabulky nebo spustit kód z nesprávného schématu.

Dovolení

Chcete-li změnit jméno uživatele, vyžaduje ALTER ANY USER oprávnění.

Ke změně cílového přihlášení uživatele se vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit uživatelské jméno uživatele, který má oprávnění CONTROL k databázi, vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit výchozí schéma nebo jazyk, vyžaduje oprávnění ALTER pro uživatele. Uživatelé můžou změnit vlastní výchozí schéma nebo jazyk.

Příklady

Všechny příklady se spouští v uživatelské databázi.

A. Změna názvu uživatele databáze

Následující příklad změní název uživatele databáze Mary5 na Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B. Změna výchozího schématu uživatele

Následující příklad změní výchozí schéma uživatele Mary51 na Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C. Změna několika možností najednou

Následující příklad změní několik možností pro uživatele databáze s omezením v jednom příkazu.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO

D. Mapování uživatele v databázi na přihlášení Microsoft Entra po migraci

Následující příklad přemapuje uživatele, westus/joe na uživatele Microsoft Entra, joe@westus.com. Tento příklad je určený pro přihlášení, která už ve spravované instanci existují. To je potřeba provést po dokončení migrace databáze do azure SQL Managed Instance a chcete k ověření použít přihlášení Microsoft Entra.

ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]

E. Mapování starého uživatele Windows v databázi bez přihlášení ve službě Azure SQL Managed Instance na uživatele Microsoft Entra

Následující příklad přemapuje uživatele, westus/joe bez přihlášení, na uživatele Microsoft Entra, joe@westus.com. Federovaný uživatel musí existovat v Microsoft Entra ID.

ALTER USER [westus/joe] FROM EXTERNAL PROVIDER

F. Mapování uživatelského aliasu na existující přihlášení Microsoft Entra

Následující příklad přemapuje uživatelské jméno, westus\joe na joe_alias. Odpovídající přihlášení Microsoft Entra v tomto případě je joe@westus.com.

ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com], name= joe_alias

G. Mapování skupiny Windows migrované ve službě Azure SQL Managed Instance na skupinu Microsoft Entra

Následující příklad přemapuje starou místní skupinu westus\mygroup na skupinu Microsoft Entra mygroup ve spravované instanci. Skupina musí existovat v MICROSOFT Entra ID.

ALTER USER [westus\mygroup] WITH LOGIN = mygroup

Viz také

SQL Database

spravované instance SQL

* Azure Synapse
Analýza *

 

Azure Synapse Analytics

Syntax

-- Syntax for Azure Synapse

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
 NAME = newUserName
 | LOGIN = loginName
 | DEFAULT_SCHEMA = schema_name
[;]

Argumenty

userName Určuje jméno, podle kterého je uživatel identifikován uvnitř této databáze.

LOGIN =loginName Přemapuje uživatele na jiné přihlášení změnou identifikátoru zabezpečení uživatele (SID) tak, aby odpovídal identifikátoru SID přihlášení.

Pokud je příkaz ALTER USER jediným příkazem v dávce SQL, Azure SQL Database podporuje klauzuli WITH LOGIN. Pokud příkaz ALTER USER není jediným příkazem v dávce SQL nebo se provádí v dynamickém SQL, klauzule WITH LOGIN se nepodporuje.

NAME =newUserName Určuje nový název tohoto uživatele. newUserName již nesmí v aktuální databázi nastat.

DEFAULT_SCHEMA = { schemaName | NULL } Určuje první schéma, které bude prohledáno serverem při překladu názvů objektů pro tohoto uživatele. Nastavení výchozího schématu na hodnotu NULL odebere výchozí schéma ze skupiny Windows. Možnost NULL nelze použít s uživatelem systému Windows.

Poznámky

Výchozí schéma bude prvním schématem, které bude server prohledávat při překladu názvů objektů pro tohoto uživatele databáze. Pokud neurčíte jinak, výchozí schéma bude vlastníkem objektů vytvořených tímto uživatelem databáze.

Pokud má uživatel výchozí schéma, použije se toto výchozí schéma. Pokud uživatel nemá výchozí schéma, ale uživatel je členem skupiny, která má výchozí schéma, použije se výchozí schéma skupiny. Pokud uživatel nemá výchozí schéma a je členem více než jedné skupiny, bude výchozím schématem pro uživatele skupina Windows s nejnižšími principal_id a explicitně nastaveným výchozím schématem. Pokud pro uživatele nelze určit žádné výchozí schéma, použije se schéma dbo.

DEFAULT_SCHEMA lze nastavit na schéma, které v databázi aktuálně nedochází. Proto můžete uživateli přiřadit DEFAULT_SCHEMA před vytvořením schématu.

DEFAULT_SCHEMA nelze zadat pro uživatele, který je namapovaný na certifikát nebo asymetrický klíč.

Důležitý

Hodnota DEFAULT_SCHEMA se ignoruje, pokud je uživatel členem správce systému pevné role serveru. Všichni členové pevné role serveru mají výchozí schéma dbo.

Klauzule WITH LOGIN umožňuje přemapování uživatele na jiné přihlášení. Uživatelé bez přihlášení, uživatelé namapovaní na certifikát nebo uživatelé mapovaní na asymetrický klíč se s touto klauzulí nedají znovu namapovat. Přemapovat je možné jenom uživatele SQL a uživatele Windows (nebo skupiny). Klauzule WITH LOGIN se nedá použít ke změně typu uživatele, například ke změně účtu Systému Windows na přihlášení k SQL Serveru.

Pokud jsou splněny následující podmínky, jméno uživatele se automaticky přejmenuje na přihlašovací jméno.

  • Nebyl zadán žádný nový název.

  • Aktuální název se liší od přihlašovacího jména.

Jinak se uživatel nepřejmenuje, pokud volající navíc nevyvolá klauzuli NAME.

Jméno uživatele namapovaného na přihlašovací jméno SQL Serveru, certifikát nebo asymetrický klíč nemůže obsahovat znak zpětného lomítka (\).

Opatrnost

Počínaje SQL Serverem 2005 se změnilo chování schémat. Výsledkem je, že kód, který předpokládá, že schémata jsou ekvivalentní uživatelům databáze, už nemusí vracet správné výsledky. Stará zobrazení katalogu, včetně objektů sysobject, by neměla být použita v databázi, ve které byly použity některé z následujících příkazů DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. V takových databázích musíte místo toho použít nová zobrazení katalogu. Nová zobrazení katalogu berou v úvahu oddělení objektů zabezpečení a schémat zavedených v SYSTÉMU SQL Server 2005. Další informace o zobrazeních katalogu naleznete v tématu Zobrazení katalogu (Transact-SQL).

Bezpečnost

Poznámka

Uživatel, který má ALTER ANY USER oprávnění, může změnit výchozí schéma libovolného uživatele. Uživatel, který má změněné schéma, může neúmyslně vybrat data z nesprávné tabulky nebo spustit kód z nesprávného schématu.

Dovolení

Chcete-li změnit jméno uživatele, vyžaduje ALTER ANY USER oprávnění.

Ke změně cílového přihlášení uživatele se vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit uživatelské jméno uživatele, který má oprávnění CONTROL k databázi, vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit výchozí schéma nebo jazyk, vyžaduje oprávnění ALTER pro uživatele. Uživatelé můžou změnit vlastní výchozí schéma nebo jazyk.

Příklady

Všechny příklady se spouští v uživatelské databázi.

A. Změna názvu uživatele databáze

Následující příklad změní název uživatele databáze Mary5 na Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B. Změna výchozího schématu uživatele

Následující příklad změní výchozí schéma uživatele Mary51 na Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Viz také

SQL Database

spravované instance SQL

* Analytics
Systém platformy (PDW) *

 

Systém analytických platforem

Syntax

-- Syntax for Analytics Platform System

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
 NAME = newUserName
 | LOGIN = loginName
 | DEFAULT_SCHEMA = schema_name
[;]

Argumenty

userName Určuje jméno, podle kterého je uživatel identifikován uvnitř této databáze.

LOGIN =loginName Přemapuje uživatele na jiné přihlášení změnou identifikátoru zabezpečení uživatele (SID) tak, aby odpovídal identifikátoru SID přihlášení.

Pokud je příkaz ALTER USER jediným příkazem v dávce SQL, Azure SQL Database podporuje klauzuli WITH LOGIN. Pokud příkaz ALTER USER není jediným příkazem v dávce SQL nebo se provádí v dynamickém SQL, klauzule WITH LOGIN se nepodporuje.

NAME =newUserName Určuje nový název tohoto uživatele. newUserName již nesmí v aktuální databázi nastat.

DEFAULT_SCHEMA = { schemaName | NULL } Určuje první schéma, které bude prohledáno serverem při překladu názvů objektů pro tohoto uživatele. Nastavení výchozího schématu na hodnotu NULL odebere výchozí schéma ze skupiny Windows. Možnost NULL nelze použít s uživatelem systému Windows.

Poznámky

Výchozí schéma bude prvním schématem, které bude server prohledávat při překladu názvů objektů pro tohoto uživatele databáze. Pokud neurčíte jinak, výchozí schéma bude vlastníkem objektů vytvořených tímto uživatelem databáze.

Pokud má uživatel výchozí schéma, použije se toto výchozí schéma. Pokud uživatel nemá výchozí schéma, ale uživatel je členem skupiny, která má výchozí schéma, použije se výchozí schéma skupiny. Pokud uživatel nemá výchozí schéma a je členem více než jedné skupiny, bude výchozím schématem pro uživatele skupina Windows s nejnižšími principal_id a explicitně nastaveným výchozím schématem. Pokud pro uživatele nelze určit žádné výchozí schéma, použije se schéma dbo.

DEFAULT_SCHEMA lze nastavit na schéma, které v databázi aktuálně nedochází. Proto můžete uživateli přiřadit DEFAULT_SCHEMA před vytvořením schématu.

DEFAULT_SCHEMA nelze zadat pro uživatele, který je namapovaný na certifikát nebo asymetrický klíč.

Důležitý

Hodnota DEFAULT_SCHEMA se ignoruje, pokud je uživatel členem správce systému pevné role serveru. Všichni členové pevné role serveru mají výchozí schéma dbo.

Klauzule WITH LOGIN umožňuje přemapování uživatele na jiné přihlášení. Uživatelé bez přihlášení, uživatelé namapovaní na certifikát nebo uživatelé mapovaní na asymetrický klíč se s touto klauzulí nedají znovu namapovat. Přemapovat je možné jenom uživatele SQL a uživatele Windows (nebo skupiny). Klauzule WITH LOGIN se nedá použít ke změně typu uživatele, například ke změně účtu Systému Windows na přihlášení k SQL Serveru.

Pokud jsou splněny následující podmínky, jméno uživatele se automaticky přejmenuje na přihlašovací jméno.

  • Nebyl zadán žádný nový název.

  • Aktuální název se liší od přihlašovacího jména.

Jinak se uživatel nepřejmenuje, pokud volající navíc nevyvolá klauzuli NAME.

Jméno uživatele namapovaného na přihlašovací jméno SQL Serveru, certifikát nebo asymetrický klíč nemůže obsahovat znak zpětného lomítka (\).

Opatrnost

Počínaje SQL Serverem 2005 se změnilo chování schémat. Výsledkem je, že kód, který předpokládá, že schémata jsou ekvivalentní uživatelům databáze, už nemusí vracet správné výsledky. Stará zobrazení katalogu, včetně objektů sysobject, by neměla být použita v databázi, ve které byly použity některé z následujících příkazů DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. V takových databázích musíte místo toho použít nová zobrazení katalogu. Nová zobrazení katalogu berou v úvahu oddělení objektů zabezpečení a schémat zavedených v SYSTÉMU SQL Server 2005. Další informace o zobrazeních katalogu naleznete v tématu Zobrazení katalogu (Transact-SQL).

Bezpečnost

Poznámka

Uživatel, který má ALTER ANY USER oprávnění, může změnit výchozí schéma libovolného uživatele. Uživatel, který má změněné schéma, může neúmyslně vybrat data z nesprávné tabulky nebo spustit kód z nesprávného schématu.

Dovolení

Chcete-li změnit jméno uživatele, vyžaduje ALTER ANY USER oprávnění.

Ke změně cílového přihlášení uživatele se vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit uživatelské jméno uživatele, který má oprávnění CONTROL k databázi, vyžaduje oprávnění CONTROL databáze.

Chcete-li změnit výchozí schéma nebo jazyk, vyžaduje oprávnění ALTER pro uživatele. Uživatelé můžou změnit vlastní výchozí schéma nebo jazyk.

Příklady

Všechny příklady se spouští v uživatelské databázi.

A. Změna názvu uživatele databáze

Následující příklad změní název uživatele databáze Mary5 na Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B. Změna výchozího schématu uživatele

Následující příklad změní výchozí schéma uživatele Mary51 na Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Viz také