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 […]
Archiwum dla kategorii ‘SQL’
Parametr dla procedury to nie to samo co zmienna w zapytaniu ad-hoc. Wykorzystanie planów wykonania.
Jak pobrać aktualną wersję rekordu z tabeli historycznych zmian
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 […]
Mniej znane polecenia na SQL Serwerze (CHECKPOINT, KILL, SHUTDOWN)
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ą […]
Jak uruchomić procedurę zaraz po uruchomieniu usługi SQL Server?
Można co najmniej na dwa sposoby: Poprzez sp_procoption lub Poprzez SQL Server Agenta Ale po kolei:
PHP 4 i PHP 5 na jednym serwerze Apache (PHP 5 jako CGI, z mysql)
Nie samym Microsoftem programista żyje. Na Linuxie trzeba było zainstalować PHP 5, tak by się zgrał z Apache i MySql. Cały problem polegał jednak na tym, że na serwerze Apache był skonfigurowany z PHP 4 uruchamianym jako moduł. Na dodatek PHP 4 nie mogło być zamienione na PHP 5, bo były pewne strony, które wymagały […]
Jak wybrać co drugi rekord (SELECT co drugi rekord)
Jeżeli trzeba wyświetlić co drugi rekord to trzeba sobie odpowiedzieć na pytanie co to znaczy co drugi rekord! Załóżmy, że zamierzam wyświetlić co drugiego pracownika z tabeli Person.Person ze względu na numer pracownika (BusinessEntietyID). Załóżmy więc, że układam wszystkich pracowników wg ich ID. Wybór co drugiego jest teraz już prosty z algorytmicznego punktu widzenia. Numerujemy […]
Jak sprawić aby nawet administrator lub właściciel bazy danych nie mógł jej usunąć?
Bezpośrednio będzie to trudne do ustawienia, ale jeżeli zaprząc do pracy trigger DDL, to będzie łatwiej. Rozważ następujący trigger uruchamiany podczas usuwania jakiejkolwiek bazu danych: CREATE TRIGGER tr_drop_db ON ALL SERVER FOR DROP_DATABASE AS BEGIN PRINT 'Dropping database is not allowed. Contact me ……..’ ROLLBACK END