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:
- Yönetici olarak oturum açın.
- Çalıştırmayı Başlat'ı> seçin, Control admintools yazın ve tamam'ı seçin.
- Yerel Güvenlik İlkesi'ne çift tıklayın.
- 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.
- Yedekleme Dosyaları ve Dizin Özellikleri iletişim kutusunda Kullanıcı veya Grup Ekle'yi seçin.
- 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.
- 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.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin