ALTER USER (Transact-SQL)
Přejmenuje uživatele databáze nebo změní výchozí schéma.
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 *
databáze SQL v Fabric
Azure Synapse
analýzy
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é
-
CREATE USER (Transact-SQL) - DROP USER (Transact-SQL)
- databáze s omezením
-
EVENTDATA (Transact-SQL) - sp_migrate_user_to_contained (Transact-SQL)
* Azure SQL Database a SQL Database v prostředcích infrastruktury *
Azure Synapse
analýzy
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é
-
CREATE USER (Transact-SQL) - DROP USER (Transact-SQL)
- databáze s omezením
-
EVENTDATA (Transact-SQL) - sp_migrate_user_to_contained (Transact-SQL)
databáze SQL v Fabric
* SQL Managed Instance *
Azure Synapse
analýzy
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
neboX
. - 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
neboX
. - 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é
-
CREATE USER (Transact-SQL) - DROP USER (Transact-SQL)
- databáze s omezením
-
EVENTDATA (Transact-SQL) - sp_migrate_user_to_contained (Transact-SQL)
- kurz : Migrace místních uživatelů a skupin SYSTÉMU Windows sql serveru do služby SQL Managed Instance pomocí syntaxe T-SQL DDL
databáze SQL v Fabric
* 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é
-
CREATE USER (Transact-SQL) - DROP USER (Transact-SQL)
- databáze s omezením
-
EVENTDATA (Transact-SQL) - sp_migrate_user_to_contained (Transact-SQL)
databáze SQL v Fabric
Azure Synapse
analýzy
* 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é
-
CREATE USER (Transact-SQL) - DROP USER (Transact-SQL)
- databáze s omezením
-
EVENTDATA (Transact-SQL) - sp_migrate_user_to_contained (Transact-SQL)