sp_configure – część 1

by Marcin Goł on June 29th, 2009

Bardzo często korzystamy z procedury sp_configure w celu ustawienia pewnych opcji SQL Server. Jak wiemy po wykonaniu procedury sp_configure otrzymujemy kilkadziesiąt wierszy z różnymi ustawieniami – przynajmniej kilka z nich umie wymienić każdy, jednakże są też mniej znane czy też mające status obsolete. W moich następnych kilku postach opiszę wszystkie opcje dostępne w SQL Server 2008.

Na pierwszy ogień idzie trochę danych ogólnych o sp_configure i reconfigure. W kolejnych odcinkach pojawią się najpierw opcje niezaawansowane, a później zaawansowane.

Trochę ogólników

Aktualnie w SQL Server 2008 SP1 Enterprise jest dokładnie 68 różnych ustawień, którymi możemy zarządzać przy pomocy sp_configure. Do listy opcji i ich aktualnych ustawień możemy się “dobrać” odwołując widok systemowy:
SELECT *
FROM sys.configurations

Wynik pracy polecenia będzie +- taki:

sys.configurations

Co ciekawego? Ano kilka rzeczy się znajdzie:

value – wartość skonfigurowana

value_in_use – wartość obecnie używana – czyli że ta wartość zostanie zastąpiona przez wartość z kolumny value po restarcie SQL’a

description/is_dynamic – czyli coś czego nie uświadczy się w sp_configure; pierwsze pole jest jasne, natomiast is_dynamic = 1 oznacza że zmiana wartości jest możliwa bez restaru SQL Servera (wystarczy polecenie reconfigure), warość 0 w tym polu oznacza konieczność restartu SQL Servera celem załadowania zmian.

Poniżej lista opcji, które wymagają restartu SQL Servera aby zaczęły działać:

  • affinity I/O mask
  • awe enabled
  • c2 audit mode
  • common criteria compliance enabled
  • EKM provider enabled
  • fill factor (%)
  • lightweight pooling
  • locks
  • max worker threads
  • open objects
  • priority boost
  • remote access
  • scan for startup procs
  • set working set size
  • user connections

Jak widać nie ma ich wiele – ale są ;-)

Reconfigure

Skoro już wiemy gdzie jakich opcji szukać wypadało by wiedzieć jak już używać. Poniższe polecenia pokazują jak się należy obchodzić z pewnymi opcjami :)

SELECT ‘przed zmiana                ’,
name,
Cast(VALUE AS INT) AS VALUE,
Cast(value_in_use AS INT) AS value_in_use
FROM sys.configurations
WHERE configuration_id = 103 – user connections
GO

sp_configure ‘user connections’, 1000
GO

SELECT ‘po sp_configure             ’,
name,
Cast(VALUE AS INT) AS VALUE,
Cast(value_in_use AS INT) AS value_in_use
FROM sys.configurations
WHERE configuration_id = 103 – user connections
GO

RECONFIGURE
GO

RECONFIGURE with override
GO

SELECT ‘po reconfigure with override’,
name,
Cast(VALUE AS INT) AS VALUE,
Cast(value_in_use AS INT) AS value_in_use
FROM sys.configurations
WHERE configuration_id = 103 – user connections

Poniżej kod, zmieniający wartość ustawienia ‘user connections’, efekt na mojej instancji testowej był taki:

reconfigure

Należy zwrócić uwagę że opcja user connections, jest opcją która wymaga restartu SQL Server celem zaaplikowania. Co ciekawe samo wywołanie polecenia reconfigure zostało zakończone błędem z komunikatem że zmiany ad hoc na widokach systemowych ! Ale już z reconfigure with override daje rade – zapisać że taka wartość w konfiguracji (ale nie modyfikuje wartości) aktualnie używanych.

Co powoduje dodanie opcji with override? Samo reconfigure zanim zapisze zmiany sprawdza ich poprawność, tzn. czy wartości są w odpowiednim zakresie – nie tylko z zakresu zmiennej ale i rekomendacji – tzn. np. recovery interval powinno być <= 60. No dobrze ale czy ograniczanie liczby połączeń do 1000 jest błędem ? Nie :) nasz problem powodowany jest ustawieniem innej opcji: allow updates, która ma status obsolete (ale o tym w następnym odcinku). Tutaj pozostaje nam jeszcze ważna uwaga że reconfigure przepisuje (można to zobrazować przepisaniem wartości z kolumny value na value_in_use dla opcji dynamicznych) ponownie wszystkie opcje! Dodanie opcji with override powoduje zapisanie zmian do katalogów systemowych bez sprawdzania zawartości zmian – a co za tym idzie w naszym przypadku dajemy radę :)

Dla jasności dodam jeszcze czym jest sp_configure? Procedura systemowa odpowiedzialna za listowanie oraz modyfikowanie pewnych opcji SQL Server. Można ją wywołać na kilka sposobów:

sp_configure – zwróci ustawienia wszystkich opcji

sp_configure ‘nazwa opcji’ – zwróci ustawienia jednej wybranej opcji

sp_configure ‘nazwa opcji’, wartosc – zmieni ustawienia jednej wybranej opcji.

W następnym odcinku omówione zostanie omówione opcje podstawowe (16 sztuk).

From → SQL Server

No comments yet

Leave a Reply

Note: XHTML is allowed. Your email address will never be published.

Subscribe to this comment feed via RSS