sp_configure – część 2
Mój poprzedni post zawierał wprowadzenie do tematyki zmiany konfiguracji serwera SQL, można go znaleźć tutaj:
http://itsouldiers.com/blog/2009/06/sp_configure-czesc-1/
W część 2 zostaną omówione opcje konfiguracyjne niebędące opcjami zaawansowanymi, jeśli uważacie że mam jakieś błędy lub niedopowiedzenia – śmiało dajcie znać w komentarza rozstrzygniemy i poprawimy, a teraz do dzieła:
SELECT * FROM sys.configurations
WHERE is_advanced = 0
ORDER BY name
allow updates
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 0
zastosowanie: ustawienie tej opcji miało umożliwiać modyfikację tabel systemowych
status: obsolete
Opcja niedostępna od SQL Server 2005, wykonanie reconfigure z allow updates ustawionym na 1 powoduje błąd:
Msg 5808, Level 16, State 1, Line 1
Ad hoc update to system catalogs is not supported.
backup compression default
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 0
zastosowanie: ustawienie kompresji backupu jako opcji domyślnej; opcja nie jest dostępna na edycjach niższych niż Enterprise; uwaga a dostępność
clr enabled
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 0
zastosowanie: umożliwia uruchomienie na instancji obsługi CLR użytkownika, systemowe CLR (np. hierarchyId) będą działały bez względu na to jak jest skonfigurowana ta opcja. Kilka informacji o CLR można wyciągnąć z widoku sys.assemblies. Po wyłączeniu opcji, biblioteki użytkownika są natomiast wyłączane.
Uwaga: CLR nie działa jeśli zostanie włączona opcja lightweight pooling.
cross db ownership chaining
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 0
zastosowanie: zapewnia działanie mechanizmu ownership chaining (OC) pomiędzy bazami danych jednej instancji; należy zawrócić uwagę że sam mechanizm jest stosowany wewnątrz baz danych i może się przyczyniać do małego wzrostu wydajności; przykład użytkownik A jest właścicielem schematu w którym znajdują się tabele, następnie buduje na nich widok – następnie do tego widoku nadaje uprawnienia użytkownikowi B; kiedy użytkownik B odpytuje widok wówczas SQL Server sprawdza czy właścicielem schematu, w którym jest widok jest ten sam użytkownik który jest właścicielem widoku – jeśli tak, wówczas NIE są sprawdzane uprawnienia do obiektów a użytkownik B dostaje wynik zapytania; w przypadku kiedy widok odwoływał by się również do tabel, znajdujących sie w schemacie którego A nie jest właścicielem wówczas są sprawdzane uprawnienia.
Po włączeniu mechanizmu OC pomiędzy bazami w danej instancji (tzn. można to zrobić dla wszystkich baz instancji omawianą opcją lub pojedynczo poleceniem ALTER DATABASE) – możliwy jest to wykonania atak polegający na stworzeniu w bazie X użytkownika C o takiej samej nazwie jak użytkownik w bazie Y, stworzeniu przez tego użytkownika C widoku i nadaniu sobie uprawnień do tego widoku można uzyskać dostęp do danych z innej bazy danych w tej samej instancji.
default language
dostępne wartości: 0->9999, domyślnie – 0
zastosowanie: określa domyślny język dla nowo tworzonych loginów; dostępne języki są przechowywane w widoku systemowym sys.syslanguages, wartość jaką wpisujemy do opcji default language to wartość z kolumny langid ze wspomnianego widoku; język można również ustawiać dla konkretnego sesji używając polecenia set language:
SET LANGUAGE N’us_english’
PRINT Datename(MONTH, Getdate())
SET LANGUAGE N’polski’
PRINT Datename(MONTH, Getdate())
wynik będzie następujący:
Changed language setting to us_english.
June
Changed language setting to polski.
czerwiec
filestream access level
dostępne wartości: 0 – wyłączone, 1 – aktywne tylko dla SQL Server, 2 – aktywne dla SQL Server i klientów Windows
zastosowanie: uruchamia mechanizm filestream – umożliwiający przechowywanie danych z wierszy bezpośrednio na systemie plików a nie w pliku bazy danych; dostępne tylko w SQL Server2008
max text repl size (B)
dostępne wartości: 0 -> 2GB, domyślnie – 65536 (64kB)
zastosowanie: opcja ustawia maksymalny rozmiar pola replikowanego przez mechanizm replikacji transakcyjnej lub przechwyconego mechanizmem Change Data Capture; dotyczy typów danych: apply to text, ntext, varchar(max), nvarchar(max), varbinary(max), xml, and image.
nested triggers
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 1
zastosowanie: umożliwia włączenie wywoływania triggerów wewnątrz triggerów; poziomów zagłębień może być 32, a triggery typu instead of zostają uruchomione bez względu na ustawienia tej opcji
remote access
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 1
zastosowanie: umożliwia uruchamianie lokalnych procedur na serwerach zdalnych lub procedur ze zdalnych serwerów na lokalnej instancji sql; współpracuje z serwerami dodanymi przy pomocy procedury sp_addserver; alternatywą dla tego mechanizmu jest technologia linked server.
status: obsolete
remote admin connections
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 0
zastosowanie: domyślnie DAC słucha na porcie 1434 karty loopback (adres 127.0.0.1), po uruchomieniu dostępu zdalnego zaczyna nasłuchiwać na innych ip, jeśli port 1434 jest zajęty należy w logu error logu SQL Servera poszukać wpisu:
“Dedicated admin connection support was established for listening… ”
znajduje się ona w pierwszych krokach sekwencji startowej – zaraz po tym jak SQL podniesie obsługę sieci.
remote login timeout (s)
dostępne wartości: 0->2GB, domyślnie – 20, dodatkowo 0 oznacza nieskończoność
zastosowanie: ustawia czas jaki SQL Server będzie oczekiwał na zalogowanie się do serwera zdalnego; maja ma zastosowanie w przypadku braku dostępu do serwera zdalnego – jeśli maszyna zdalna odpowie że błąd logowania SQL Server zgłosi błąd.
remote proc trans
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 0
zastosowanie: umożliwia zapewnienie transakcjom rozproszonym spełnienie warunków ACID, dzięki mechanizmowi MSDTC (po włączeniu tej opcji transakcje rozpoczęte jako lokalne są automatycznie odpalane jako rozproszone jeśli odwołują się do zewnętrznych zasobów – bez konieczności przepisywania procedur na BEGIN DISTRIBUTED TRANSACTION); z poziomu połączenia można nadpisać wartości tego ustawienia przy pomocy REMOTE_PROC_TRANSACTIONS.
status: obsolete
remote query timeout (s)
dostępne wartości: 0->2GB, domyślnie – 600
zastosowanie: określa jak długo SQL Server będzie oczekiwał na wynik zapytania ze zdalnej maszyny; to opcja _nie_ dotyczy zapytań otrzymywanych przez SQL’a. Provider dostępowy do innych źródeł danych zapisuje wartość tej opcji do zmiennych: DBPROP_COMMANDTIMEOUT oraz DBPROP_GENERALTIMEOUT, co oznacza – timeout zapytania oraz wszystkich innych operacji. W związku z tym jeśli piszemy jakieś duże zapytania na systemach zdalnych i mamy timeouty to należy: zoptymalizować zapytanie, a potem być może sprawdzić czy nie powinniśmy wydłużyć timeoutów.
server trigger recursion
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 1
zastosowanie: podobnie do wcześniej podanej opcji dotyczącej triggerów – tym razem mamy do wyboru czy triggery na poziomie serwera również będą się wykonywały rekurencyjnie; ten punkt dotyczy min logon triggerów wprowadzonych w SQL Server 2005 SP2
show advanced options
dostępne wartości: 0 – nie, 1 – tak, domyślnie – 0
zastosowanie: umożliwia zarządzanie pozostałymi 52 opcjami
user options
dostępne wartości: 0->32767, domyślnie – 0
zastosowanie: umożliwia zarządzanie domyślnymi ustawieniami sesji użytkowników, wartość jaką należy wpisać jest sumą poszczególnych opcji jakie chcemy uruchomić, poniżej spis opcji wraz z ich wartościami:
1 DISABLE_DEF_CNST_CHK
zaszłość z SQL Server version 6.x, obsolete
2 IMPLICIT_TRANSACTIONS
Określa kiedy uruchamiana jest transakcja, czy tylko po jej jawnym rozpoczęciu w kodzie czy również po pewnych zapytaniach (min. select, create, drop, grant, revoke i kilku innych)
4 CURSOR_CLOSE_ON_COMMIT
Określa zachowanie kursorów po commit/rollback
8 ANSI_WARNINGS
Jeśli w funkcji SUM, AVG, MAX, MIN, STDEV, STDEVP, VAR, VARP, or COUNT zostanie napotkany null to po włączeniu tej opcji spowoduje to wyjątek
16 ANSI_PADDING
Określa sposób w jaki są przechowywane wartości krótsze niż zdefiniowane w definicji kolumn char, varchar, binary, and varbinary. Ponadto w BOL zamieszczono zdanie: “When ANSI_PADDING set to OFF, queries that involve MIN, MAX, or TOP on character columns might be slower than in SQL Server 2000.”
32 ANSI_NULLS
Ustawienie tej opcji zmienia obsługę wartości null, w operatorach porównania; kiedy jest włączona należy używać konstrukcji is null, po wyłączeniu opcji jest możliwe porównywanie null operatorem równości
64 ARITHABORT
Zmienia zachowania SQL Server w przypadku wystąpienia przepełnienia typu danych lub dzielenia przez zero, w zależności od opcji ANSI_WARNINGS efekty są różne od cofnięcia zapytania, batcha lub przejścia dalej z wartością null
128 ARITHIGNORE
Wymusza zwracanie null w przypadku wystąpienia problemów arytmetycznych
256 QUOTED_IDENTIFIER
Po włączeniu tej opcji identyfikatory obiektów powinny być opakowywane w cudzysłowy (”), przy wyłączonej opcji obiekty należy ograniczać nawiasami kwadratowymi []
512 NOCOUNT
Wyłącza _wyświetlanie_ liczby wierszy jakie zostały potraktowane zapytaniem, nawet przy włączonym nocount zmienna @@rowcount jest aktualizowana
1024 ANSI_NULL_DFLT_ON
Określa że nowo tworzone kolumny bez jawnie zdefiniowanego przyjmowania wartości null, będą mogły przyjmować wartość null
2048 ANSI_NULL_DFLT_OFF
Określa że nowo tworzone kolumny bez jawnie zdefiniowanego przyjmowania wartości null, _nie_ będą mogły przyjmować wartość null
4096 CONCAT_NULL_YIELDS_NULL
Po włączeniu tej opcji konkatenacja string i null zwraca null, po jej wyłączeniu zwraca string
8192 NUMERIC_ROUNDABORT
Powoduje generowanie wyjątki jeśli w wyniku operacji arytmetycznej zmniejszana jest precyzja zmiennych
16384 XACT_ABORT
Określa czy cała transakcja zostanie cofnięta po zgłoszeniu błędu wykonania czy tylko polecenie, które wygenerowało błąd
W następnym odcinku zapoznany się z częścią opcji zaawansowanych :)
I have been looking looking around for this kind of information. Will you post some more in future? I’ll be grateful if you will.