Aktualny certyfikat = Aktualna wiedza. Egzaminy z SQL Server 2012

2012-03-13

Ciągle zmieniają się technologie. Co z tego, że znasz SQL w wersji 2000/2005/2008 i twoja firma go używa. Jeśli osiądziesz na laurach i zamkniesz się w tej znanej ci technologii, a ktoś podejmie decyzję o przejściu na SQL 2012, to okaże się, że twoje umiejętności są marne!

Chcąc być na topie,przygotowanym do nowych wdrożeń, albo chcąc zmienić pracę po prostu musisz znać to co najnowsze. Czy Microsoft nie utrudnia nam przypadkiem w tym względzie życia? Przecież nowe wersje serwerów publikowane przez Microsoft co kilka lat powodują, że ciągle mamy coś nowego do zrobienia i do nauczenia się. Rzeczywiście, można tak postrzegać działania Microsoftu… Jeśli jednak nie jesteś upartym marudą i dostrzegasz zalety samorozwoju oraz nowe funkcjonalności nowych wersji serwerów to z pewnością ucieszy cię fakt, że wraz z nowymi technologiami Microsoft wypuszcza nowe wersje certyfikatów, egzaminów oraz co może najważniejsze kursów: Czytaj dalej »

Przedłużenie okresu próbnego w Windows Server 2008 (TRIAL REARM)

2012-03-09

Jeśli skorzystałeś z próbnej wersji Windows Server 2008, masz 60 dni zabawy z tym systemem operacyjnym. Jeżeli zabawa Ci się podoba, a nie pamiętasz kiedy zainstalowałeś serwer użyj następującego polecenia do sprawdzenia ilości pozostałych dni:

slmgr -dli

Oto wynik:

Czytaj dalej »

Czy mam problem z wydajnością dysku?

2012-03-06

Funkcja systemowa  fn_virtualfilestats pokaże wiele ciekawych informacji o tym jak bardzo jest używany plik bazy danych:

SELECT * FROM fn_virtualfilestats(DB_ID(’AdventureWorks2008R2′), NULL)

 Przydatne są oczywiście kolumny:

  • Bytes on disk
  • Number Reads / Bytes Read
  • Number Writes / Bytes Written

Kolumna IO Stall Read MS mówi o tym ile w sumie czasu trzeba było czekać na wykonanie odczytu z pliku. Jest to suma zmierzona w milisekundach. Podobnie IO Stall Write MS, mówi o sumie czasu oczekiwania na zapis.

 Analizując dyski przydatne będą także liczniki sysmon-a:

  • Average Disk sec/Read (The average time, in milliseconds, of a read of data from disk; read latency)
  • Average Disk sec/Write (The average time, in milliseconds, of a write of data to disk; write latency)

 Choć trudno tu podać jednoznaczny wzór, można posiłkować się tabelką:

  • <5 ms super!
  • 5-20 ok
  • 20-50 wolno
  • 50-100 – raczej wąskie gardło
  • >100 – na pewno wąskie gardło!
By Rafał Kraik in Helpdesk, SQL

Rozmiar plików bazy danych (w tym rozmiar loga transakcyjnego)

2012-03-06
 

Szukałem polecenia pokazującego rozmiar loga transakcyjnego. Oto ono:

SELECT DB_NAME(database_id) AS DatabaseName,
Name AS Logical_Name,
Physical_Name, (size*8)/1024 SizeMB
FROM sys.master_files
WHERE DB_NAME(database_id) = 'AdventureWorks2008R2′

Zapytanie pochodzi z http://blog.sqlauthority.com/2010/02/08/sql-server-find-the-size-of-database-file-find-the-size-of-log-file/

By Rafał Kraik in SQL

Najstarsza aktywna transakcja

2012-03-06

Podczas wykonywania loga transakcyjnego liczysz na to, że zwolni się miejsce w logu na kolejne transakcje. TO prawda, ale… zwalniane jest miejsce tylko z tych częśi loga transakcyjnego, które nie są w danej chwili aktywne, to znaczy nie zawierają ani jednej aktywnej transakcji. Tymczasem może się zdarzyć, że gdzieś w logu „wisi” zapomniana przez użytkownika transakcja. Do kogo należy i z jakiej chwili ta transakcja pochodzi? Na to pytanie odpowie DBCC: Czytaj dalej »

By Rafał Kraik in SQL

Rzut okiem w log transakcyjny

2012-03-06

Log transakcyjny składa się z Virtual Log Files. Podobnie jak właściwa baza danych składa się ze stron i extentów, tak log transakcyjny składa się z VLF. Zaraz po utworzeniu bazy danych (i loga) można sprawdzić ile i jakich VLF zostało utworzonych:

CREATE DATABASE x
ALTER DATABASE x SET RECOVERY FULL
DBCC LOGINFO (x)

W tym przypadku plik log ma 2 VLF. Utwórzmy teraz dużo transakcji:

CREATE TABLE x
(x char(8000))
GO
 
INSERT x VALUES (’x’)
GO 1000
 
DBCC LOGINFO (x)

Po takiej czynności log tranakcyjny musiał urosnąć. Tutaj ma już 3 kawałki.  Jak widać, jeżeli często plik loga musi się rozrastać, będzie się składał z dużej liczby małych VLF. A to nie dobrze… Czytaj dalej »

By Rafał Kraik in SQL

Przykład SQL Injection. Jak się zabezpieczyć przed SQL Injection?

2012-03-03

Na atak SQL Injection narażone są programy, w których programista zdecydował się „sklejać” zapytania z fragmentów instrukcji SQL wpisanych przez programistę z fragmentami tekstu wpisywanymi przez użytkowników. Takie zapytanie, powstałe wskutek złączenia kodu programisty są następnie uruchamiane jako tzw. dynamiczny SQL. O ile w przypadku gdy użytkownik podaje „normalne” dane, zapytanie będzie działać zgodnie z założeniami, o tyle, gdy użytkownik odpowiednio spreparuje dane, może doprowadzić do uruchomienia własnych instrukcji. Zobaczmy to na przykładzie:

Najpierw załóżmy prostą tabelę: Czytaj dalej »

By Rafał Kraik in SQL