SQL Server instalacja kończy się niepowodzeniem, jeśli konto konfiguracji nie ma określonych praw użytkownika

Dotyczy: SQL Server 2008SQL Server 2008 R2SQL Server 2012

Symptomy


Rozważmy następujący scenariusz. Aby wzmocnić zabezpieczenia, należy usunąć niektóre domyślne prawa użytkownika do lokalnej grupy administratorów w systemie operacyjnym Windows. W przygotowaniu do konfigurowania programu Microsoft SQL Server w tym systemie możesz dodać konto Instalatora do lokalnej grupy administratorów.

W tym scenariuszu, jeśli można zainstalować lub uaktualnić do programu Microsoft SQL Server, proces instalacji może zakończyć się niepowodzeniem i otrzymywać różne komunikaty o błędzie, które zostały wymienione w poniższych sekcjach.

Scenariusz 1: Dla nowej instalacji program instalacyjny nie powiedzie się i zostanie wyświetlony następujący komunikat o błędzie:

Odmowa dostępu

Ponadto można zauważyć komunikaty o błędach podobne do następujących w pliku Detail.txt:

2009-01-02 13:00:17 SQLEngine:--SqlServerServiceSCM: Oczekiwanie na zdarzenie nt "Global\sqlserverRecComplete$ NIIT" ma zostać utworzony

2009-01-02 13:00:20 SQLEngine:--SqlServerServiceSCM: oczekuje na zdarzenie nt "Global\sqlserverRecComplete$ NIIT" lub uchwytu procesu sql być sygnalizowane

2009-01-02 13:00:20 Slp: Akcja konfiguracji Niepowodzenie funkcji SQL_Engine_Core_Inst podczas czasu scenariusz ConfigRC i ConfigRC.

2009-01-02 13:00:20 Slp: odmowa dostępu

2009-01-02 13:00:20 Slp: Akcja konfiguracji Niepowodzenie funkcji SQL_Engine_Core_Inst podczas czasu scenariusz ConfigRC i ConfigRC.

2009-01-02 13:00:20 Slp: System.ComponentModel.Win32Exception: odmowa dostępu

2009-01-02 13:00:20 Slp: o system.Diagnostics.processmanager.openprocessint32 przetwarzanie (Int32 processId, dostęp Int32, Boolean throwIfExited)

2009-01-02 13:00:20 Slp: w System.Diagnostics.Process.GetProcessHandle (Int32 dostęp, Boolean throwIfExited)

2009-01-02 13:00:20 Slp: o System.Diagnostics.Process.OpenProcessHandle()

2009-01-02 13:00:20 Slp: o System.Diagnostics.Process.get_Handle()

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceBase.WaitSqlServerStart (proces processSql)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlEngine.SqlServerServiceSCM.StartSqlServer (String [] Parametry)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlEngine.SqlServerStartup.StartSQLServerForInstall (sqlCollation ciąg, ciąg masterFullPath, Boolean isConfiguringTemplateDBs)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.ConfigSQLServerSystemDatabases (właściwości EffectiveProperties, isConfiguringTemplateDBs typu Boolean, Boolean useInstallInputs)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.DoCommonDBStartConfig (czas ConfigActionTiming)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.Install (czasu ConfigActionTiming, actionData słownik ' 2, PublicConfigurationBase spcb)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute (ConfigActionScenario scenariusz, czas ConfigActionTiming, actionData słownik ' 2, PublicConfigurationBase spcbCurrent)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute (ConfigActionScenario scenariusz, czas ConfigActionTiming, actionData słownik ' 2, PublicConfigurationBase spcbCurrent)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction (identyfikator ciągu akcji)

2009-01-02 13:00:20 Slp: o Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute (identyfikator ciągu akcji, TextWriter errorStream)

2009-01-02 13:00:20 Slp: wyjątek: System.ComponentModel.Win32Exception.

2009-01-02 13:00:20 Slp: źródło: System.

2009-01-02 13:00:20 Slp: komunikat: odmowa dostępu.

Scenariusz 2: uaktualnienia do programu SQL Server 2008 na regule Engine_SqlEngineHealthCheck zgłasza następujący komunikat o błędzie:

Reguła Nazwa: Engine_SqlEngineHealthCheck opis reguły: sprawdza, czy usługi SQL Server może być uruchamiana ponownie; lub dla klastrowanego wystąpienia, czy zasób programu SQL Server jest w trybie online. Wynik: Wiadomość/działanie naprawcze nie powiodło się: nie można uruchomić ponownie usługę programu SQL Server; lub dla klastrowanego wystąpienia SQL Server zasób nie jest w trybie online

Ponadto można zauważyć komunikaty o błędach podobne do następujących w pliku Detail.txt

2009-05-27 17:50:20 SQLEngine:: punkt kontrolny silnika sprawdzanie "GetSqlServerProcessHandle_1" 2009-05-27 17:50:20 SQLEngine:--SqlServerServiceSCM: Oczekiwanie na zdarzeniach nt "Global\sqlserverRecComplete$ przykład SQL10" created2009-05-27 17:50:22 SQLEngine:-- SqlServerServiceSCM: Oczekuje na zdarzenie nt "Przykład Global\sqlserverRecComplete$ SQL10" lub uchwytu procesu sql za signaled2009-05-27 17:50:22 SQLEngine:--FacetSqlEngineHealthCheck: Engine_SqlEngineHealthCheck: błąd: odmowa dostępu

Scenario3: Nowa instalacja programu Microsoft SQL Server 2012 lub Microsoft SQL Server 2008 R2 nie powiedzie się.

Podczas próby zainstalowania nowego wystąpienia programu SQL Server 2012 lub SQL Server 2008 R2 jest wyświetlany następujący komunikat o błędzie:

Reguły "Ustawienia uprawnienia konta" nie powiodło się. Konto, na którym jest uruchomiony Instalator programu SQL Server nie ma jedną lub wszystkie z następujących praw: prawo do tworzenia kopii zapasowych plików i katalogów, prawa do zarządzania inspekcją i dziennik zabezpieczeń i prawo do debugowania programów. Aby kontynuować, należy używać konta z obu tych praw.

Scenariusz 4: Instalowanie programu SQL Server 2012 lub nowszej wystąpienie nie powiedzie się po określeniu udziału sieciowego (ścieżka UNC) dla lokalizacji katalogu kopii zapasowych. Ten problem występuje, pojawi się następujący komunikat o błędzie:

Konto konfiguracji programu SQL Server nie ma uprawnień SeSecurityPrivilege na serwerze określonego pliku w ścieżce < lokalizacja kopii zapasowej UNC >. Przywilej ten jest potrzebny w działaniach ustawienia zabezpieczeń folderu program instalacyjny programu SQL Server. Aby udzielić tego uprawnienia, aby dodać konto konfiguracji programu SQL Server do zasad "Zarządzanie dziennikiem inspekcji i zabezpieczeń" należy użyć konsoli Zasady zabezpieczeń lokalnych na serwerze plików. To ustawienie jest dostępne w sekcji "Przypisania praw użytkownika" w obszarze zasady lokalne w konsoli Zasady zabezpieczeń lokalnych.

Uwaga Ten problem występuje, ponieważ konto konfiguracji programu SQL Server nie ma SeSecurityPrivilege uprawnienia na serwerze plików, który obsługuje udziału sieciowego.

Przyczyna


To zachowanie jest zgodne z projektem. Oprócz dodawania konta użytkownika, na którym jest uruchamiany Instalator jako administrator lokalny, konto użytkownika Instalatora wymaga następujące domyślne prawa użytkownika dla Instalatora zostanie ukończona pomyślnie.

Nazwa wyświetlana obiektu zasad lokalnychPrawa użytkownika
Kopii zapasowych plików i katalogówSeBackupPrivilege
Debugowania programówSeDebugPrivilege
Zarządzanie dziennikiem inspekcji i zabezpieczeńSeSecurityPrivilege

Uwaga Aby uzyskać więcej informacji o uprawnieniach, które są wymagane do zainstalowania programu SQL Server zobacz sekcję "Wymagania wstępne" następujące artykuły MSDN:

Jak: Instalowanie programu SQL Server 2008 (Instalator)

Instalowanie programu SQL Server 2012 z poziomu Kreatora instalacji (Instalator)

Dodatkowo jeśli udziałem plików SMB jest używany jako opcja magazynowania dla katalogu danych lub innych katalogów (użytkownika bazy danych katalogu, katalog dziennika bazy danych użytkownika, TempDB katalogu, katalog dziennika TempDB lub katalog kopii zapasowej), są następujące dodatkowe uprawnienia wymagane dla konta instalacji na SerwerPlików SMB opisane w następującym artykule MSDN:

Instalowanie programu SQL Server z udziałem plików SMB jako opcji magazynu

Folderze sieciowym SMB

PEŁNA KONTROLA

Konto konfiguracji SQL

Folderze sieciowym SMB

PEŁNA KONTROLA

Konto programu SQL Server i usługa SQL Server Agent

Serwer plików SMB

SeSecurityPrivilege

Konto konfiguracji SQL

Rozwiązanie


Aby dodać praw do lokalnego konta administratora, wykonaj następujące kroki:

  1. Zaloguj się do komputera jako użytkownik, który ma poświadczenia administracyjne.
  2. Kliknij przycisk Start, kliknij polecenie Uruchom, wpisz tekst Control admintoolsi kliknij przycisk OK.
  3. Kliknij dwukrotnie Zasady zabezpieczeń lokalnych.
  4. W oknie dialogowym Ustawienia zabezpieczeń lokalnych kliknij węzeł Zasady lokalne, kliknij dwukrotnie Przypisywanie praw użytkownikai następnie kliknij dwukrotnie ikonę Kopia zapasowa plików i katalogów.
  5. W oknie dialogowym właściwości katalogów i plików kopii zapasowej kliknij przycisk Dodaj użytkownika lub grupę.
  6. W oknie dialogowym Wybierz użytkowników lub grupy wpisz konto użytkownika, który jest używany do konfiguracji, a następnie dwa razy kliknij przycisk OK .
  7. Powtórz procedurę dla dwóch zasad, które są wymienione w sekcji "Przyczyna".
  8. W menu plik kliknij polecenie Zakończ , aby zamknąć okno dialogowe Ustawienia zabezpieczeń lokalnych .

Więcej informacji


 

  • Aby sprawdzić listę uprawnień, które są obecnie skojarzone z kontem, który jest używany do konfiguracji, można użyć narzędzia AccessChk.exe. Aby pobrać to narzędzie, można znaleźć w następującej lokalizacji:

http://technet.microsoft.com/en-us/sysinternals/bb664922.aspx

Sposób użycia: accesschk.exe - konto < Ustawienia > *

Na przyk³ad:

c:\tools\accesschk.exe - testdc\setupaccount *

Przykładowe dane wyjściowe:

SeSecurityPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeSystemtimePrivilege
SeShutdownPrivilege
SeRemoteShutdownPrivilege w odniesieniu
SeTakeOwnershipPrivilege
SeDebugPrivilege
SeSystemEnvironmentPrivilege
SeSystemProfilePrivilege
SeProfileSingleProcessPrivilege
SeIncreaseBasePriorityPrivilege
SeLoadDriverPrivilege
SeCreatePagefilePrivilege
SeIncreaseQuotaPrivilege
SeChangeNotifyPrivilege
SeUndockPrivilege
SeManageVolumePrivilege
Uprawnienie SeImpersonatePrivilege
SeCreateGlobalPrivilege
SeTimeZonePrivilege
SeCreateSymbolicLinkPrivilege
SeInteractiveLogonRight
SeNetworkLogonRight
SeBatchLogonRight
SeRemoteInteractiveLogonRight

To uprawnienie jest wymagane w celu pobrania listy ACL na domyślnego katalogu kopii zapasowych, aby upewnić się, że konto usługi programu SQL Server ma pełne uprawnienia do folderu. Listy ACL to ustawia również jeśli brakuje uprawnień dla konta usługi SQL tak, że może wykonywać kopii zapasowej do katalogu. Instalator wykonuje te sprawdza, czy domyślny katalog kopii zapasowej tak że jeśli kopia zapasowa jest wykonywana na domyślny katalog kopii zapasowejPo instalacji, użytkownik nie wystąpi błąd lub wydania ()ze względu na Brak uprawnień)Podczas wykonywania kopii zapasowej na domyślny katalog.

UwagaSeSecurityPrivilege jest wymagany do zmiany get i set listy ACL z katalogów i podfoldery. Dlatego jeśli nawet użytkownicy, którzy mają uprawnienia Pełna kontrola na katalogi nie ma uprawnień do get i set właściciela i inspekcji informacje z katalogu.

    • Dlaczego występuje błąd opisany w scenariuszu 4tylkow programu SQL Server 2012 i nowszych wersjach programu SQL Server?

W i nowszych wersjach programu SQL Server 2012 Microsoft rozpoczął pomocniczych plików danych i dziennika w udziale plików SMB. W ramach tej poprawie konfiguracji systemu została wzmocniona dokręcić kontroli, tak aby klienci nie występują błędy lub problemy z powodu niewystarczających uprawnień po instalacji. W przed SQL Server w wersji 2012 klienci mogą nadal ustawić ścieżka udziału sieciowego do katalogu kopii zapasowych gdy konto Usługa SQL nie ma uprawnień do wykonania kopii zapasowej. Jednak napotykają błąd po instalacji w tej sytuacji. Scenariusze te będą mogły teraz, po uruchomieniu programu SQL 2012 Sprawdzanie ustawień w udziale sieciowym.