MSSQLSERVER_916

Si applica a:SQL Server

Dettagli

Attributo Valore
Nome prodotto SQL Server
ID evento 916
Origine evento MSSQLSERVER
Componente SQLEngine
Nome simbolico NOTUSER
Testo del messaggio L'entità server "%.*ls" non è in grado di accedere al database "%.*ls" nel contesto di sicurezza corrente.

Spiegazione

L'accesso non dispone delle autorizzazioni sufficienti per connettersi al database denominato. Gli account di accesso che possono connettersi a questa istanza di SQL Server, ma che non dispongono di autorizzazioni specifiche in un database ricevono le autorizzazioni dell'utente guest. Si tratta di una misura di sicurezza per impedire agli utenti di un database di connettersi ad altri database per cui non dispongono di privilegi. È possibile ricevere questo messaggio di errore quando l'utente guest non dispone delle autorizzazioni CONNECT per il database denominato e la proprietà TRUSTWORTHY non è impostata. È possibile ricevere questo messaggio di errore quando l'utente guest non dispone delle autorizzazioni CONNECT per il database denominato.

Quando l'autorizzazione CONNECT per il database msdb viene negata o revocata, SQL Server Management Studio può ricevere questo errore quando Esplora oggetti tenta di visualizzare lo stato di gestione basata su criteri di ogni database. Esplora oggetti usa le autorizzazioni dell'accesso corrente per cercare nel database msdb queste informazioni, operazione che causa l'errore. Viene inoltre visualizzato il messaggio di errore seguente:

Impossibile recuperare i dati per la richiesta specificata. (Microsoft.SqlServer.Management.Sdk.Sfc)

Azione utente

Avviso

Prima di eludere questa misura di sicurezza, assicurarsi di sapere quali utenti sono autenticati in vari database. I metodi seguenti consentono agli utenti che dispongono delle autorizzazioni per un database di connettersi ad altri database che potrebbero esporre i dati a utenti malintenzionati. Quando i database indipendenti sono abilitati, la procedura seguente consente ai proprietari di database in un database di concedere l'accesso ad altri database nell'istanza di SQL Server.

È possibile connettersi al database in uno dei modi seguenti:

  • Concedere l'accesso specifico al database denominato. Nell'esempio seguente viene concesso l'accesso Adventure-Works\Larry al database msdb.

    USE msdb ;
    
    GO
    
    GRANT CONNECT TO [Adventure-Works\Larry] ;
    
  • Concedere l'autorizzazione CONNECT al database denominato nel messaggio di errore per l'utente guest. Nell'esempio seguente viene concessa l'autorizzazione CONNECT per il database msdb per l'utente guest.

    USE msdb ;
    
    GO
    
    GRANT CONNECT TO guest ;
    
  • Abilitare la proprietà TRUSTWORTHY per il database che ha autenticato l'utente.

    ALTER DATABASE AdventureWorks SET TRUSTWORTHY ON;