sp_configure – część 2

by Marcin Goł on June 30th, 2009

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 :)

From → SQL Server

One Comment
  1. 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.

Leave a Reply

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

Subscribe to this comment feed via RSS