Aracılığıyla paylaş


Kullanıcıları, Rolleri ve Oturum Açma Bilgilerini Yönetme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'de Azure Synapse AnalyticsSQL veritabanı

SMO'da oturum açma bilgileri Login nesnesiyle temsil edilir. SQL Server'da oturum açma mevcut olduğunda, bir sunucu rolüne eklenebilir. Sunucu rolü, ServerRole nesnesi tarafından temsil edilir. Veritabanı rolü DatabaseRole nesnesiyle, uygulama rolü ise ApplicationRole nesnesiyle temsil edilir.

Sunucu düzeyiyle ilişkili ayrıcalıklar, ServerPermission nesnesinin özellikleri olarak listelenir. Sunucu düzeyi ayrıcalıkları tek tek oturum açma hesaplarına verilebilir, reddedilebilir veya iptal edilebilir.

Her Database nesnesi, veritabanındaki tüm kullanıcıları belirten bir UserCollection nesnesine sahiptir. Her kullanıcı bir oturum açma işlemiyle ilişkilendirilir. Bir oturum açma birden fazla veritabanındaki kullanıcılarla ilişkilendirilebilir. Login nesnesinin EnumDatabaseMappings yöntemi, oturum açmayla ilişkili her veritabanındaki tüm kullanıcıları listelemek için kullanılabilir. Alternatif olarak, User nesnesinin Login özelliği kullanıcıyla ilişkili oturum açmayı belirtir.

SQL Server veritabanları, kullanıcının belirli görevleri gerçekleştirmesine olanak tanıyan bir dizi veritabanı düzeyi ayrıcalığı belirten rollere de sahiptir. Sunucu rollerinin aksine veritabanı rolleri sabit değildir. Bunlar oluşturulabilir, değiştirilebilir ve kaldırılabilir. Toplu yönetim için bir veritabanı rolüne ayrıcalıklar ve kullanıcılar atanabilir.

Example

Aşağıdaki kod örnekleri için, uygulamanızı oluşturmak için programlama ortamını, programlama şablonunu ve programlama dilini seçmeniz gerekir. Daha fazla bilgi için bkz. Visual Studio .NET'te Visual C# SMO Projesi Oluşturma.

Visual C'de Oturum Açma Bilgilerini ve İlişkili Kullanıcıları Numaralandırma#

Veritabanındaki her kullanıcı bir oturum açma işlemiyle ilişkilendirilir. Oturum açma birden fazla veritabanındaki kullanıcılarla ilişkilendirilebilir. Kod örneğinde, oturum açma işlemiyle ilişkilendirilmiş tüm veritabanı kullanıcılarını listelemek için EnumDatabaseMappings nesnesinin Login yönteminin nasıl çağrılacakları gösterilmektedir. Örnek, AdventureWorks2025 veritabanında bir giriş ve kullanıcı oluşturarak haritalama bilgilerinin sayılması için oluşturulur.

{
Server srv = new Server();
//Iterate through each database and display.

foreach ( Database 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;
   d = db.EnumLoginMappings();
   //Display the mapping information.
   foreach (DataRow r in d.Rows) {
      foreach (DataColumn c in r.Table.Columns) {
         Console.WriteLine(c.ColumnName + " = " + r[c]);
      }
      Console.WriteLine(" ");
   }
}
}

PowerShell'de Oturum Açma Bilgilerini ve İlişkili Kullanıcıları Numaralandırma

Veritabanındaki her kullanıcı bir oturum açma işlemiyle ilişkilendirilir. Oturum açma birden fazla veritabanındaki kullanıcılarla ilişkilendirilebilir. Kod örneğinde, oturum açma işlemiyle ilişkilendirilmiş tüm veritabanı kullanıcılarını listelemek için EnumDatabaseMappings nesnesinin Login yönteminin nasıl çağrılacakları gösterilmektedir. Örnek, AdventureWorks2025 veritabanında bir giriş ve kullanıcı oluşturarak haritalama bilgilerinin sayılması için oluşturulur.

# Set the path context to the local, default instance of SQL Server.
CD \sql\localhost\Default\Databases

#Iterate through all databases
foreach ($db in Get-ChildItem)
{
  "====="
  "Login Mappings for the database: "+ $db.Name

  #get the datatable containing the mapping from the smo database object
  $dt = $db.EnumLoginMappings()

  #display the results
  foreach($row in $dt.Rows)
  {
     foreach($col in $row.Table.Columns)
     {
       $col.ColumnName + "=" + $row[$col]
     }
   }
 }

Rolleri ve Kullanıcıları Yönetme

Bu örnek, rollerin ve kullanıcıların nasıl yönetileceğini gösterir. Bu örneği çalıştırmak için aşağıdaki derlemelere başvurmanız gerekir:

  • Microsoft.SqlServer.Smo.dll

  • Microsoft.SqlServer.Management.Sdk.Sfc.dll

  • Microsoft.SqlServer.ConnectionInfo.dll

  • Microsoft.SqlServer.SqlEnum.dll

using Microsoft.SqlServer.Management.Smo;
using System;

public class A {
   public static void Main() {
      Server svr = new Server();
      Database db = new Database(svr, "TESTDB");
      db.Create();

      // Creating Logins
      Login login = new Login(svr, "Login1");
      login.LoginType = LoginType.SqlLogin;
      login.Create("password@1");

      Login login2 = new Login(svr, "Login2");
      login2.LoginType = LoginType.SqlLogin;
      login2.Create("password@1");

      // Creating Users in the database for the logins created
      User user1 = new User(db, "User1");
      user1.Login = "Login1";
      user1.Create();

      User user2 = new User(db, "User2");
      user2.Login = "Login2";
      user2.Create();

      // Creating database permission Sets
      DatabasePermissionSet dbPermSet = new DatabasePermissionSet(DatabasePermission.AlterAnySchema);
      dbPermSet.Add(DatabasePermission.AlterAnyUser);

      DatabasePermissionSet dbPermSet2 = new DatabasePermissionSet(DatabasePermission.CreateType);
      dbPermSet2.Add(DatabasePermission.CreateSchema);
      dbPermSet2.Add(DatabasePermission.CreateTable);

      // Creating Database roles
      DatabaseRole role1 = new DatabaseRole(db, "Role1");
      role1.Create();

      DatabaseRole role2 = new DatabaseRole(db, "Role2");
      role2.Create();

      // Granting Database Permission Sets to Roles
      db.Grant(dbPermSet, role1.Name);
      db.Grant(dbPermSet2, role2.Name);

      // Adding members (Users / Roles) to Role
      role1.AddMember("User1");

      role2.AddMember("User2");

      // Role1 becomes a member of Role2
      role2.AddMember("Role1");

      // Enumerating through explicit permissions granted to Role1
      // enumerates all database permissions for the Grantee
      DatabasePermissionInfo[] dbPermsRole1 = db.EnumDatabasePermissions("Role1");
      foreach (DatabasePermissionInfo dbp in dbPermsRole1) {
         Console.WriteLine(dbp.Grantee + " has " + dbp.PermissionType.ToString() + " permission.");
      }
      Console.WriteLine(" ");
   }
}