Condividi tramite


Account di accesso e utenti di Microsoft Entra con nomi visualizzati non univoci

Si applica a: SQL Server 2025 (17.x) Database SQL di AzureIstanza gestita di SQL di AzureMicrosoft Fabric

Questo articolo illustra come usare la sintassi T-SQL Object_ID per creare account di accesso e utenti Microsoft Entra con nomi visualizzati non univoci nel database SQL di Azure, nel database SQL di Infrastruttura, nell'istanza gestita di SQL di Azure e in SQL Server 2025 e versioni successive.

Annotazioni

È possibile creare utenti nel database SQL di Infrastruttura, ma non negli account di accesso.

Informazioni generali

Microsoft Entra ID supporta l'autenticazione per le entità servizio. Tuttavia, l'uso di un principale del servizio con un nome visualizzato non univoco in Microsoft Entra ID comporta errori durante la creazione dell'account di accesso o dell'utente in SQL Server, nel database SQL di Azure e nell'istanza gestita di SQL di Azure.

Ad esempio, se l'applicazione myapp non è univoca, potrebbe verificarsi l'errore seguente:

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. 

Quando si tenta di eseguire l'istruzione T-SQL seguente:

CREATE LOGIN [myapp] FROM EXTERNAL PROVIDER 

Estensione WITH OBJECT_ID

L'errore di nome visualizzato duplicato si verifica perché Microsoft Entra ID consente nomi visualizzati duplicati per l'applicazione Microsoft Entra (entità servizio), mentre SQL Server e Azure SQL richiedono nomi univoci per creare account di accesso e utenti di Microsoft Entra. Per attenuare questo problema, l'istruzione DDL (Data Definition Language) per creare account di accesso e gli utenti è stata estesa per includere l'ID oggetto della risorsa di Azure con la WITH OBJECT_ID clausola .

Annotazioni

La maggior parte dei nomi visualizzati non univoci in Microsoft Entra ID è correlata alle entità servizio, anche se occasionalmente i nomi di gruppo possono anche non essere univoci. I nomi principali utente di Microsoft Entra sono univoci, in quanto due utenti non possono avere lo stesso nome principale utente. Tuttavia, è possibile creare una registrazione dell'app (principale del servizio) con un nome visualizzato identico a quello di un principale utente.

Se il nome visualizzato dell'entità servizio non è duplicato, è necessario usare l'istruzione predefinita CREATE LOGIN o CREATE USER. L'estensione WITH OBJECT_ID è un elemento di ripristino della risoluzione dei problemi implementato per l'uso con entità servizio non univoche. Non è consigliabile usarlo con un'entità servizio univoca. L'uso dell'estensione WITH OBJECT_ID per un'entità servizio senza l’aggiunta di un suffisso verrà eseguito correttamente, ma non risulterà chiaro per quale entità servizio sarà stato creato l'account di accesso o l'utente. È consigliabile creare un alias usando un suffisso per identificare in modo univoco l'entità servizio. L'estensione WITH OBJECT_ID è supportata per SQL Server 2025 e versioni successive.

Sintassi T-SQL per la creazione di login/utente con nomi visualizzati non univoci

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

Con l'estensione di supporto DDL T-SQL per creare account di accesso o utenti con l'ID oggetto, è possibile evitare l'errore 33131 e specificare anche un alias per l'account di accesso o l'utente creato con l'ID oggetto. Ad esempio, l'esempio T-SQL seguente crea un account di accesso myapp4466e usando l'ID aaaaaaaa-0000-1111-2222-bbbbbbbbbbbboggetto dell'applicazione .

CREATE LOGIN [myapp4466e] FROM EXTERNAL PROVIDER 
  WITH OBJECT_ID = 'aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb' 
  • Per eseguire questa query T-SQL, l'ID oggetto specificato deve esistere nel tenant di Microsoft Entra in cui risiede la risorsa SQL. In caso contrario, il CREATE comando avrà esito negativo con il messaggio di errore: Msg 37545, Level 16, State 1, Line 1 '' is not a valid object id for '' or you do not have permission.
  • L'account di accesso o il nome utente devono contenere il nome principale del servizio originale esteso da un suffisso specificato dall'utente quando si usa l'istruzione CREATE LOGIN o CREATE USER. Come procedura consigliata, il suffisso può includere una parte iniziale del relativo ID oggetto. Ad esempio, myapp2ba6c per l'oggetto ID bbbbbbbb-1111-2222-3333-cccccccccccc. Tuttavia, è anche possibile definire un suffisso personalizzato. Non è necessario formare il suffisso dall'ID oggetto.

Questa convenzione di denominazione è consigliata per associare in modo esplicito l'utente del database o il login riconducendolo al relativo oggetto in Microsoft Entra ID.

Annotazioni

L'alias è conforme alla specifica T-SQL per sysname, inclusa una lunghezza massima di 128 caratteri. È consigliabile limitare il suffisso ai primi cinque caratteri dell'ID oggetto.

Il nome visualizzato del principale del servizio in Microsoft Entra ID non viene sincronizzato con il login del database o l'alias utente. L'esecuzione CREATE LOGIN o CREATE USER non influisce sul nome visualizzato nel portale di Azure. Analogamente, la modifica del nome visualizzato dell'ID Microsoft Entra non influisce sull'accesso al database o sull'alias utente.

Identificare l'utente creato per l'applicazione

Per i principali di servizio non univoci, è importante verificare che l'alias di Microsoft Entra sia associato all’applicazione corretta. Per verificare che l'utente sia stato creato per l'entità servizio corretta (applicazione):

  1. Ottenere l'ID applicazione dell'applicazione o l'ID oggetto del gruppo Microsoft Entra dall'utente creato in SQL di Azure o SQL Server. Vedere le query seguenti:

    • Per ottenere l'ID applicazione del principale del servizio creato dall'utente, eseguire la seguente query:

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

      Output di esempio:

      Screenshot dell'output della query di SQL Server Management Studio (SSMS) per l'ID applicazione.

      L'ID applicazione viene convertito dal numero di identificazione di sicurezza (SID) per il login o il nome utente specificato, che è possibile confermare eseguendo la query T-SQL successiva e confrontando le ultime cifre e le date di creazione:

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

      Output di esempio:

      Screenshot dell'output della query di SQL Server Management Studio (SSMS) per il SID dell'applicazione.

    • Per ottenere l'ID oggetto del gruppo Microsoft Entra creato dall'utente, eseguire la query seguente:

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

      Output di esempio:

      Screenshot dell'output della query di SQL Server Management Studio (SSMS) per l'ID oggetto del gruppo Microsoft Entra.

      Per controllare il SID del gruppo Microsoft Entra creato dall'utente, eseguire la query seguente:

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

      Output di esempio:

      Screenshot dell'output di una query di SQL Server Management Studio (SSMS) per il SID del gruppo.

    • Per ottenere l'ID oggetto e l'ID applicazione dell'applicazione usando PowerShell, eseguire il comando seguente:

      Get-AzADApplication -DisplayName "myapp2ba6c"
      
  2. Passare al portale di Azure e nella risorsa dell'applicazione aziendale o del gruppo Microsoft Entra verificare rispettivamente l'ID applicazione o l'ID oggetto. Verificare se corrisponde a quello ottenuto dalla query precedente.

Annotazioni

Quando si crea un utente da un principale del servizio, l'ID oggetto è obbligatorio quando si usa la clausola WITH OBJECT_ID con l'istruzione CREATE T-SQL. Questo valore è diverso dall'ID applicazione restituito quando si tenta di verificare l'alias in SQL Server. Usando questo processo di verifica, è possibile identificare l'entità servizio o il gruppo associato all'alias SQL in Microsoft Entra ID e evitare possibili errori durante la creazione di account di accesso o utenti con un ID oggetto.

Ricerca dell'ID oggetto corretto

Per informazioni sull'ID oggetto di un principale del servizio, vedere Oggetto principale del servizio. È possibile individuare l'ID oggetto dell'entità servizio elencato accanto al nome dell'applicazione nel portale di Azure in Applicazioni aziendali.

Avvertimento

L'ID oggetto ottenuto nella pagina Panoramica della registrazione dell'app è diverso dall'ID oggetto ottenuto nella pagina Panoramica delle applicazioni aziendali . Se sei nella pagina Panoramica della registrazione app, seleziona il nome dell'applicazione gestita nel directory locale collegato per navigare all'ID oggetto corretto nella pagina Panoramica delle applicazioni aziendali.