Archiwum dla kategorii ‘SQL’

Jak ustawić poziom izolacji transakcji SNAPSHOT?

2011-11-23

Do ustawienia poziomu izolacji transakcji służy polecenie SET TRANSACTION ISOLATION LEVEL SNAPSHOT Może się jednak zdarzyć, że otrzymasz błąd:

Jak z wartości w zmiennej typu DATE i wartości w zmiennej typu TIME utworzyć wartość DATETIME2?

2011-11-19

Od wersji serwera SQL 2008 mamy do dyspozycji typ DATE i TIME i wiele innych zamiast jedynego do tej pory DATETIME. Typ DATE przechowuje datę (bez czasu) a typ TIME przechowuje czas (bez daty). Jednak jak połączyć to w całość, przypominającą dawny DATETIME (zawierający i datę i czas)? Da się.

By Rafał Kraik in SQL

Jak badać w poziomie batch-a wynik polecenia sqlcmd?

2011-11-19

SQLCmd to polecenie pozwalające na uruchamianie w trybie wsadowym skryptów SQL. Można go użyć np w edycji Express, do regularnego wykonywania kopii zapasowej (co było już opisane na mobilo/mobilo24). Jak jednak zbadać, jaki jest wynik działania polecenia SQLCmd z poziomu „dos-owego batch-a”, który uruchomił skrypt? Załóżmy, że w batch-u masz polecenie: sqlcmd -i D:\skrypty\kopia.sql -o […]

Procedura składowana – BEGIN i END

2011-11-11

Zamierzasz utworzyć procedurę, którą będzie uruchamiał pewien nowy użytkownik. Tworzymy więc konto użytkownika: USE Test GO CREATE USER TestUser WITHOUT LOGIN GO Teraz dla użytkownika utworzymy procedurę i nadamy uprawnienia dla tego użytkownika: CREATE PROCEDURE TestIt AS BEGIN  SELECT file_id, name  FROM sys.database_files END GRANT EXECUTE ON TestIt TO TestUser GO Uwaga! Uruchamiając ten kod […]

Parametr dla procedury to nie to samo co zmienna w zapytaniu ad-hoc. Wykorzystanie planów wykonania.

2011-10-29

Ten przykład pokaże, że co innego jest napisać i dobrze wykorzystać procedurę składowaną z parametrami, a co innego ten sam kod wykonać jako zapytanie ad-hoc, nawet jeżeli pewne wartości do zapytania będą przekazywane poprzez zmienne. Będziemy pracować w testowej bazie danych: use AdventureWorks2008R2 Zauważ, jak zachowuje się poniższe zapytanie:  SELECT * FROM Sales.SalesOrderHeader  WHERE OrderDate […]

By Rafał Kraik in SQL

Jak pobrać aktualną wersję rekordu z tabeli historycznych zmian

2011-10-29

  Załóżmy, że mamy tabelę o następującej strukturze: CREATE TABLE case_status ( Id INT, CaseId CHAR(10), Status CHAR(10) ) Tabela ma zapamiętywać historyczne zmiany, które zachodziły dla określonych spraw (CaseId). Przyjrzyjmy się takim danym: INSERT INTO case_status VALUES (1,’CASE_A’,’Open’), (2,’CASE_B’,’Open’), (3,’CASE_A’,’Process’), (4,’CASE_C’,’Open’), (5,’CASE_A’,’Close’), (6,’CASE_B’,’Process’) Widać, że sprawa „CASE_A: została kiedyś otwarta (rekord nr 1), potem […]

By Rafał Kraik in SQL

Mniej znane polecenia na SQL Serwerze (CHECKPOINT, KILL, SHUTDOWN)

2011-10-29

Zacznijmy od niegroźnego polecenia CHECKPOINT Powoduje ono uruchomienie procesu CHECKPOINT polegającego na przepisaniu „brudnych stron” z bufora SQL Serwera na dysk. Domyślnie czynność ta wykonuje się sama, bez naszej ingerencji, a wpływ ma na nią opcja serwera 'Recovery Interval’. Jeżeli chcesz aby baza danych po awarii odtwarzała się szybciej to zmniejsz recovery interval. Chceckpointy będą […]

By Rafał Kraik in SQL