Condividi tramite


Gestione di utenti, ruoli e account di accesso

In SMO gli accessi sono rappresentati dall'oggetto Login. Quando l'accesso è presente in SQL Server, può essere aggiunto a un ruolo del server. Il ruolo del server è rappresentato dall'oggetto ServerRole. Il ruolo del database è rappresentato dall'oggetto DatabaseRole, mentre il ruolo dell'applicazione è rappresentato dall'oggetto ApplicationRole.

I privilegi associati al livello del server sono elencati come proprietà dell'oggetto ServerPermission. I privilegi al livello del server possono essere concessi, negati o revocati da account di accesso singoli.

Ogni oggetto Database dispone di un oggetto UserCollection che specifica tutti gli utenti del database. Ogni utente è associato a un accesso. Un accesso può essere associato agli utenti di più database. Il metodo EnumDatabaseMappings dell'oggetto Login può essere utilizzato per elencare tutti gli utenti di ogni database associato all'accesso. In alternativa, la proprietà Login dell'oggetto User specifica l'accesso associato all'utente.

I database SQL Server dispongono anche di ruoli che specificano un set di privilegi al livello del database che consentono a un utente di eseguire attività specifiche. A differenza dei ruoli del server, i ruoli del database non sono fissi, ma possono essere creati, modificati e rimossi. Privilegi e utenti possono essere assegnati a un ruolo del database per l'amministrazione bulk.

Esempio

Per l'esempio di codice seguente, è necessario selezionare l'ambiente, il modello e il linguaggio di programmazione per la creazione dell'applicazione. Per ulteriori informazioni, vedere Procedura: Creazione di un progetto Visual Basic SMO in Visual Studio .NET e Procedura: Creazione di un progetto Visual C# SMO in Visual Studio .NET.

Enumerazione di account di accesso e utenti associati in Visual Basic

A ogni utente di un database è associato un account di accesso. L'account di accesso può essere associato a utenti di più database. Nell'esempio di codice viene illustrato come chiamare il metodo EnumDatabaseMappings dell'oggetto Login per ottenere un elenco di tutti gli utenti del database associati all'accesso. Nell'esempio vengono creati un account di accesso e un utente nel database AdventureWorks per garantire la presenza di informazioni di mapping da enumerare.

'Connect to the local, default instance of SQL Server.
Dim srv As Server
srv = New Server
'Iterate through each database and display.
Dim db As Database
For Each db In srv.Databases
    Console.WriteLine("============================================")
    Console.WriteLine("Login Mappings for the database: " + db.Name)
    Console.WriteLine(" ")
    'Run the EnumLoginMappings method and return details of database user-login mappings to a DataTable object variable.
    Dim d As DataTable
    d = db.EnumLoginMappings
    'Display the mapping information.
    Dim r As DataRow
    Dim c As DataColumn
    For Each r In d.Rows
        For Each c In r.Table.Columns
            Console.WriteLine(c.ColumnName + " = " + r(c))
        Next
        Console.WriteLine(" ")
    Next
Next

Enumerazione di account di accesso e utenti associati in Visual C#

A ogni utente di un database è associato un account di accesso. L'account di accesso può essere associato a utenti di più database. Nell'esempio di codice viene illustrato come chiamare il metodo EnumDatabaseMappings dell'oggetto Login per ottenere un elenco di tutti gli utenti del database associati all'accesso. Nell'esempio vengono creati un accesso e un utente nel database AdventureWorks per garantire la presenza di informazioni di mapping da enumerare.

//Connect to the local, default instance of SQL Server. 
{ 
Server srv = default(Server); 
srv = new Server(); 
//Iterate through each database and display. 
Database db = default(Database); 
foreach ( db in srv.Databases) { 
   Console.WriteLine("===================================="); 
   Console.WriteLine("Login Mappings for the database: " + db.Name); 
   Console.WriteLine(" "); 
   //Run the EnumLoginMappings method and return details of database user-login mappings to a DataTable object variable. 
   DataTable d = default(DataTable); 
   d = db.EnumLoginMappings; 
   //Display the mapping information. 
   DataRow r = default(DataRow); 
   DataColumn c = default(DataColumn); 
   foreach ( r in d.Rows) { 
      foreach ( c in r.Table.Columns) { 
         Console.WriteLine(c.ColumnName + " = " + r(c)); 
      } 
      Console.WriteLine(" "); 
   } 
} 
}