Sdílet prostřednictvím


Přihlášení a uživatelé Microsoft Entra s neunique zobrazovanými jmény

Platí pro: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric

V tomto článku se naučíte, jak pomocí syntaxe T-SQL Object_ID vytvořit přihlášení a uživatele Microsoft Entra s neunikátními zobrazovanými názvy ve službě Azure SQL Database, Fabric SQL databázi, Azure SQL Managed Instance a SQL Server 2025 a novějších verzích.

Poznámka:

V databázi SQL Fabric můžete vytvářet uživatele, ale ne přihlášení.

Přehled

ID Microsoft Entra podporuje ověřování pro služební principály. Použití služebního principála se zobrazovaným názvem, který není jedinečný v Microsoft Entra ID, vede k chybám při vytváření přihlášení nebo uživatele v SQL Serveru, Azure SQL Database a Azure SQL Managed Instance.

Pokud například aplikace myapp není jedinečná, může dojít k následující chybě:

Msg 33131, Level 16, State 1, Line 4 
Principal 'myapp' has a duplicate display name. Make the display name unique in Azure Active Directory and execute this statement again. 

Při pokusu o spuštění následujícího příkazu T-SQL:

CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER 

Rozšíření WITH OBJECT_ID

K chybě duplicitního zobrazovaného názvu dochází, protože Microsoft Entra ID umožňuje duplicitní zobrazované názvy pro aplikaci Microsoft Entra (instanční objekt), zatímco SQL Server a Azure SQL vyžadují jedinečné názvy k vytvoření přihlášení a uživatelů Microsoft Entra. Pokud chcete tento problém zmírnit, příkaz DDL (Data Definition Language) pro vytvoření přihlášení a uživatelů byl rozšířen tak, aby zahrnoval ID objektu prostředku Azure s WITH OBJECT_ID klauzulí.

Poznámka:

Většina neunikátních zobrazovaných názvů v Microsoft Entra ID souvisí se service principals, i když občas mohou být názvy skupin také neunikátní. Hlavní názvy uživatelských účtů v Microsoft Entra jsou jedinečné, protože dva uživatelé nemohou mít stejné uživatelské jméno hlavního objektu. Registraci aplikace (principál služby) je možné vytvořit se zobrazovaným názvem, který je stejný jako hlavní název uživatelského účtu.

Pokud zobrazovaný název služebního hlavního objektu není duplicitní, měl by se použít výchozí výrok CREATE LOGIN nebo CREATE USER. Rozšíření WITH OBJECT_ID je řešení potíží s opravou položky implementované pro použití s neunique instančními objekty. Nedoporučuje se používat s jedinečnou aplikační identitou. Použití rozšíření WITH OBJECT_ID pro instanční objekt bez přidání přípony se úspěšně spustí, ale nebude zřejmé, pro který instanční objekt se vytvořil přihlášení nebo uživatel. Doporučujeme vytvořit alias pomocí přípony k jednoznačné identifikaci instančního objektu. Rozšíření WITH OBJECT_ID je podporováno pro SQL Server 2025 a novější verze.

Syntaxe vytvoření přihlašovacího/uživatelského účtu T-SQL pro neunikátní zobrazované názvy

CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER 
  WITH OBJECT_ID = 'objectid'
CREATE USER [user_name] FROM EXTERNAL PROVIDER 
  WITH OBJECT_ID = 'objectid'

S rozšířením podpory T-SQL DDL pro vytváření přihlášení nebo uživatelů s ID objektu se můžete vyhnout chybě 33131 a také zadat alias pro přihlášení nebo uživatele vytvořeného pomocí ID objektu. Například následující ukázka T-SQL vytvoří přihlášení myapp4466e pomocí ID aaaaaaaa-0000-1111-2222-bbbbbbbbbbbbobjektu aplikace .

CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER 
  WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' 
  • Chcete-li spustit tento dotaz T-SQL, musí zadané ID objektu existovat v tenantovi Microsoft Entra, kde se nachází prostředek SQL. Jinak příkaz CREATE selže s chybovou zprávou: Msg 37545, Level 16, State 1, Line 1 '' is not a valid object id for '' or you do not have permission.
  • Přihlašovací jméno nebo uživatelské jméno musí obsahovat původní hlavní název služby rozšířený uživatelem definovanou příponou při použití CREATE LOGIN příkazu nebo CREATE USER příkazu. Osvědčeným postupem je, že přípona může obsahovat počáteční část ID objektu. myapp2ba6c Například pro ID bbbbbbbb-1111-2222-3333-ccccccccccccobjektu . Můžete ale také definovat vlastní příponu. Vytvoření přípony z ID objektu není povinné.

Tato pojmenovací konvence se doporučuje k explicitnímu přidružení uživatele databáze nebo přihlášení zpět k jeho objektu v Microsoft Entra ID.

Poznámka:

Alias dodržuje specifikaci T-SQL, sysnamevčetně maximální délky 128 znaků. Doporučujeme omezit příponu na prvních pět znaků ID objektu.

Zobrazovaný název služby v Microsoft Entra ID se nesynchronizuje s přihlašovacím jménem databáze nebo s aliasem uživatele. Spuštění CREATE LOGIN nebo CREATE USER nebude mít vliv na zobrazovaný název na webu Azure Portal. Podobně úprava zobrazovaného názvu ID Microsoft Entra neovlivní přihlašovací jméno databáze ani alias uživatele.

Identifikace uživatele vytvořeného pro aplikaci

U nejedinečných služebních principálů je důležité ověřit, že alias Microsoft Entra je správně svázán se správnou aplikací. Ověření, že byl uživatel vytvořen pro správnou službu principal (aplikaci):

  1. Získejte ID aplikace aplikace nebo ID objektu skupiny Microsoft Entra od uživatele vytvořeného v Azure SQL nebo SQL Serveru. Projděte si následující dotazy:

    • Pokud chcete získat ID aplikace hlavní služby (service principal), kterou vytvořil uživatel, spusťte následující dotaz:

      SELECT CAST(sid as uniqueidentifier) ApplicationID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c' 
      

      Příklad výstupu:

      Snímek obrazovky s výstupem dotazu aplikace SQL Server Management Studio (SSMS) pro ID aplikace

      ID aplikace se převede z identifikačního čísla zabezpečení (SID) pro zadané přihlašovací jméno nebo uživatelské jméno, které můžeme potvrdit spuštěním dalšího dotazu T-SQL a porovnáním posledních několika číslic a vytvořením kalendářních dat:

      SELECT SID, create_date FROM sys.server_principals WHERE NAME = 'myapp2ba6c' 
      

      Příklad výstupu:

      Snímek obrazovky s výstupem dotazu SQL Server Management Studio (SSMS) pro siD aplikace

    • Pokud chcete získat ID objektu skupiny Microsoft Entra od vytvořeného uživatele, spusťte následující dotaz:

      SELECT CAST(sid as uniqueidentifier) ObjectID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b' 
      

      Příklad výstupu:

      Snímek obrazovky s výstupem dotazu aplikace SQL Server Management Studio (SSMS) pro ID objektu skupiny Microsoft Entra

      Pokud chcete zkontrolovat identifikátor SID skupiny Microsoft Entra od vytvořeného uživatele, spusťte následující dotaz:

      SELECT SID, createdate FROM sys.sysusers WHERE NAME = 'myappgroupd3451b' 
      

      Příklad výstupu:

      Snímek obrazovky s výstupem dotazu aplikace SQL Server Management Studio (SSMS) pro identifikátor SID skupiny

    • Pokud chcete získat ID objektu a ID aplikace aplikace pomocí PowerShellu, spusťte následující příkaz:

      Get-AzADApplication -DisplayName "myapp2ba6c"
      
  2. Přejděte na Azure Portal a ve podnikové aplikaci nebo prostředku skupiny Microsoft Entra zkontrolujte ID aplikace nebo ID objektu. Zkontrolujte, jestli odpovídá té, která byla získána z předchozího dotazu.

Poznámka:

Při vytváření uživatele z objektu služby se při použití klauzule WITH OBJECT_ID s příkazem T-SQL vyžaduje ID objektuCREATE. Toto se liší od ID aplikace , které se vrátí při pokusu o ověření aliasu na SQL Serveru. Pomocí tohoto procesu ověřování můžete identifikovat instanční objekt nebo skupinu přidruženou k aliasu SQL v Microsoft Entra ID a zabránit možným chybám při vytváření přihlášení nebo uživatelů s ID objektu.

Vyhledání správného ID objektu

Informace o ID objektu přiřazeného uživatelskému účtu služby naleznete v tématu Objekt uživatelského účtu služby. ID objektu service principalu, uvedeného vedle názvu aplikace, naleznete v Azure portálu v části Podnikové aplikace.

Výstraha

ID objektu získané na stránce Přehled registrace aplikace se liší od ID objektu získaného na stránce Přehled podnikových aplikací . Pokud jste na stránce Přehled registrace aplikace, vyberte propojenou aplikaci Spravovaná aplikace v místním adresáři a přejděte ke správnému ID objektu na stránce Přehled podnikových aplikací.