varsayılan kullanıcı hakları kaldırıldıktan sonra SQL Server yükleme başarısız oluyor

Bu makale, güvenliği artırdıktan sonra Microsoft SQL Server yüklediğinizde veya yükselttiğinde oluşan bir sorunu çözmenize yardımcı olur.

Şunlar için geçerlidir: SQL Server

Belirtiler

Windows'ta Microsoft SQL Server çalıştırdığınız senaryoyu düşünün. Güvenliği sıkılaştırmak için yerel yöneticiler grubundan bazı varsayılan kullanıcı haklarını kaldırırsınız. Sistemde SQL Server ayarlamak için kurulum hesabını yerel yöneticiler grubuna eklersiniz.

Bu senaryoda, SQL Server yüklemeye veya yükseltmeye çalışırsanız yükleme işlemi başarısız olur ve aşağıdaki gibi listelenen iletilerden birine benzeyen bir hata iletisi alabilirsiniz:

  • Senaryo 1: Yeni bir yükleme başarısız olursa aşağıdaki hata iletisini alırsınız:

    Access is denied
    

    Detail.txt dosyasında aşağıdakine benzer hata iletileri de alabilirsiniz:

    2009-01-02 13:00:17 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' to be created  
    2009-01-02 13:00:20 SQLEngine: --SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' or sql process handle to be signaled  
    2009-01-02 13:00:20 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC.  
    2009-01-02 13:00:20 Slp: Access is denied  
    2009-01-02 13:00:20 Slp: Configuration action failed for feature SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC.  
    2009-01-02 13:00:20 Slp: System.ComponentModel.Win32Exception: Access is denied  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited)  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.OpenProcessHandle()  
    2009-01-02 13:00:20 Slp:    at System.Diagnostics.Process.get_Handle()  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceBase.WaitSqlServerStart(Process processSql)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceSCM.StartSqlServer(String[] parameters)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlServerStartup.StartSQLServerForInstall(String sqlCollation, String masterFullPath, Boolean isConfiguringTemplateDBs)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.ConfigSQLServerSystemDatabases(EffectiveProperties properties, Boolean isConfiguringTemplateDBs, Boolean useInstallInputs)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.DoCommonDBStartConfig(ConfigActionTiming timing)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.Install(ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcb)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcbCurrent)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenario scenario, ConfigActionTiming timing, Dictionary<string, string> actionData, PublicConfigurationBase spcbCurrent)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId)  
    2009-01-02 13:00:20 Slp:    at Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter errorStream)  
    2009-01-02 13:00:20 Slp: Exception: System.ComponentModel.Win32Exception.  
    2009-01-02 13:00:20 Slp: Source: System.  
    2009-01-02 13:00:20 Slp: Message: Access is denied.  
    
  • Senaryo 2: Microsoft SQL Server 2012 veya Microsoft SQL Server 2008 R2'nin yeni yüklemesi başarısız olursa, aşağıdaki hata iletilerinden birini alırsınız:

    Rule "Setup account privileges" failed.  
    
    The account that is running SQL Server Setup doesn't have one or all of the following rights: the right to back up files and directories, the right to manage auditing and the security log and the right to debug programs. To continue, use an account with both of these rights.
    
  • Senaryo 3: Yedekleme dizini konumu için bir ağ paylaşımı (UNC yolu) belirttiğinizde SQL Server 2012 veya sonraki bir sürümün yüklenmesi başarısız olursa, aşağıdaki hata iletisini alırsınız:

    SQL Server setup account does not have the `SeSecurityPrivilege` on the specified file server in the path *\<UNC backup location>*. This privilege is required to set folder security in the SQL Server setup program. To grant this privilege, use the Local Security Policy console on this file server to add SQL Server setup account to **Manage auditing and security log** policy. This setting is available in the **User Rights Assignments** section under Local Policies in the Local Security Policy console.
    

    Not

    Bu sorun, SQL Server kurulum hesabının ağ paylaşımını SeSecurityPrivilege barındıran dosya sunucusunda izinlere sahip olmaması nedeniyle oluşur.

Neden

Kurulumu yerel yönetici olarak çalıştırıyorsanız, kurulumun başarıyla çalışması için aşağıdaki kullanıcı haklarına ihtiyacınız vardır:

Yerel grup ilkesi Nesne görünen adı Kullanıcı hakkı
Dosyaları ve dizinleri yedekleme SeBackupPrivilege
Programlarda Hata Ayıklama SeDebugPrivilege
Denetim ve güvenlik günlüğünü yönetme SeSecurityPrivilege

Not

SQL Server yüklemek için gereken izinler hakkında daha fazla bilgi için aşağıdaki makalelerde "Önkoşullar" bölümüne bakın:

Veri dizini veya diğer dizinler için bir depolama seçeneği (kullanıcı veritabanı dizini, kullanıcı veritabanı günlük dizini, TempDB dizini, TempDB günlük dizini veya yedekleme dizini) SMB dosya paylaşımını kullanıyorsa, Kurulum hesabı SMB dosya sunucusunda SMB dosya paylaşımı depolama alanıyla SQL Server yükleme bölümünde açıklandığı gibi aşağıdaki ek izinleri gerektirir.

SMB Ağ paylaşımı klasörü TAM DENETIM SQL Kurulum hesabı
SMB Ağ paylaşımı klasörü TAM DENETIM hizmet hesabını SQL Server ve SQL Server Agent
SMB Dosya sunucusu SeSecurityPrivilege SQL kurulum hesabı

Çözüm

Hakları kurulum hesabına eklemek için şu adımları izleyin:

  1. Yönetici olarak oturum açın.
  2. Çalıştırmayı Başlat'ı> seçin, Control admintools yazın ve tamam'ı seçin.
  3. Yerel Güvenlik İlkesi'ne çift tıklayın.
  4. Yerel Güvenlik Ayarları iletişim kutusunda Yerel İlkeler'i seçin, Kullanıcı Hakları Ataması'nı açın ve ardından Yedekleme Dosyaları ve Dizinleri'ne çift tıklayın.
  5. Yedekleme Dosyaları ve Dizin Özellikleri iletişim kutusunda Kullanıcı veya Grup Ekle'yi seçin.
  6. Kullanıcı veya Grup Seç iletişim kutusunda, kurulum için kullanmak istediğiniz kullanıcı hesabını girin ve ardından iki kez Tamam'ı seçin.

    Not

    Programlarda Hata Ayıklama ve Denetim ve güvenlik günlüğü ilkelerini yönetme kullanıcı hesabını eklemek için 1 ile 6 arasında adımları uygulayın.

  7. Dosya menüsünde Yerel Güvenlik Ayarları iletişim kutusunu açın ve kapatmak için Çıkış'ı seçin.

Sık sorulan sorular (SSS)

SeSecurityPrivilege UNC paylaşımındaki yedekleme dizini için dosya sunucusunda neden gereklidir?

bu izin, SQL Server hizmet hesabının klasör üzerinde tam izinlere sahip olduğundan emin olmak için varsayılan yedekleme dizinindeki Access Control Listeler (ACL' ler) almak için gereklidir. Hizmet hesabı, dizinin yedeğinin çalıştırılabilmesi için SQL hizmet hesabı için izinler eksikse ACL'leri de ayarlar. Kurulum programı, varsayılan yedekleme dizini için bu denetimleri çalıştırır, böylece yükleme sonrasında bir yedekleme gerçekleştirilirse hatayla karşılaşmazsınız (eksik izinler nedeniyle).

Not

SeSecurityPrivilege öğesini dizinlerden ve alt klasörlerden değiştirmek get/set ACLs için gereklidir. Dizinlerde TAM DENETİm izinlerine sahip kullanıcıların dizinden bilgi ve denetim izinleri get/set OWNER olmasa bile bu durum geçerlidir.

Senaryo 3'te açıklanan hata neden yalnızca Microsoft SQL Server 2012 ve sonraki sürümlerde oluşuyor?

SQL Server 2012'den itibaren Microsoft, SMB dosya paylaşımındaki veriler ve günlük dosyaları için destek sağlar. Bu geliştirmenin bir parçası olarak kurulum deneyimi, müşterilerin yükleme sonrasında yetersiz izinler nedeniyle hata veya sorunlarla karşılaşmaması için güvenlik denetimlerini sıkılaştıracak şekilde geliştirilir. SQL Server 2012 öncesi sürümlerde, SQL Hizmeti hesabının yedekleme çalıştırma izinleri yoksa kullanıcılar yedekleme dizini için ağ paylaşım yolunu ayarlamaya devam edebilir. Ancak, bu kullanıcılar bu durumda yükleme sonrasında bir hatayla karşılaşır. Bu senaryolar artık bir ağ paylaşımında SQL 2012 kurulum denetimini başlattığınızda engellenir.

Daha fazla bilgi

  • Şu anda kurulum hesabıyla ilişkilendirilmiş ayrıcalıkların listesini denetlemek için AccessChk.exe aracını kullanın. Bu aracı indirmek için bkz. AccessChk v6.13.

    Kullanım: accesschk.exe- a \<setup account> *

    Örneğin: c:\tools\accesschk.exe -a testdc\setupaccount *

      Sample output:
             SeSecurityPrivilege
              SeBackupPrivilege
              SeRestorePrivilege
              SeSystemtimePrivilege
              SeShutdownPrivilege
              SeRemoteShutdownPrivilege
              SeTakeOwnershipPrivilege
              SeDebugPrivilege
              SeSystemEnvironmentPrivilege
              SeSystemProfilePrivilege
              SeProfileSingleProcessPrivilege
              SeIncreaseBasePriorityPrivilege
              SeLoadDriverPrivilege
              SeCreatePagefilePrivilege
              SeIncreaseQuotaPrivilege
              SeChangeNotifyPrivilege
              SeUndockPrivilege
              SeManageVolumePrivilege
              SeImpersonatePrivilege
              SeCreateGlobalPrivilege
              SeTimeZonePrivilege
              SeCreateSymbolicLinkPrivilege
              SeInteractiveLogonRight
              SeNetworkLogonRight
              SeBatchLogonRight
              SeRemoteInteractiveLogonRight
    
  • Daha fazla bilgi için bkz . Windows Hizmet Hesaplarını ve İzinlerini Yapılandırma.