2012-04-01
Załóżmy, że masz tabelę:
CREATE TABLE test (string VARCHAR(50))
INSERT INTO test VALUES
(’S-123′),
(’SKOK-12#34′),
(’ABC?CDE/12/EG/19871′)
Zauważ, że każdy z napisów kończy się jakąś liczbą. Jak wyciąć liczbę z napisu w tym przypadku? Przydatna będzie funkcja PATINDEX. Funkcja ta potrafi znaleźć wystąpienie określonego wzorca w napisie. Tylko czym miałby być u nas ten napis. Wycięcie z końca napisu liczby polega na znalezieniu pierwszego znaku, który liczbą nie jest patrząc od końca. Maska, która określa znak nie będący liczbą wygląda tak: '%[^0-9]%’ natomiast obrót napisu tak, by analizę wykonać od końca zapewni funkcja REVERSE: Czytaj dalej »
2012-03-31
Kiedy przystępujesz do programu certyfikacyjnego, masz w tym jakiś cel. Wierzę, że tym celem nie jest jedynie udekorowanie ścian fajnymi dyplomami. Dyplom dostaniesz już po szkoleniu, zaś wejście na ścieżkę certyfikacyjną to zaliczanie kolejnych egzaminów.
Przyjrzyjmy się kilku liczbom:
- Co roku na świecie przybywa około 59% procent danych w porównaniu do poprzedniego roku (Gartner)
- Z tego 15% jest zapisywane w postaci tabel
- W ciągu najbliższych dziesięciu lat będzie 44 razy więcej danych niż obecnie
- W tym samym czasie ilość osób zajmujących się tymi danymi 1,4 raza
Wniosek? Będziemy mieć więcej pracy. Czytaj dalej »
2012-03-23
Na stronie http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx znajduje się prosta tabelka przedstawiająca możliwości i ograniczenia poszczególnych wersji SQL Server 2008.
Strona zawiera też opisy prezentowanych funkcjonalności.
2012-03-16
Znam pewną fabrykę, która jak to duża fabryka, nie przyjmowała małych zleceń, tylko same duże. Wiadomo – duże zlecenie, duże pieniądze. Aby zaś zrealizować małe zlecenie pracownicy musieli odpowiednio przygotować do tego maszyny, wymienić materiał, co generowało mniejsze dochody. Najgorsze przy przyjmowaniu małych zleceń było to, że kiedy fabryka zdecydowała się je realizować, a właśnie pojawiło się duże opłacalne zadanie, wykonanie dużego zlecenia nie było możliwe, bo maszyny były zajęte.
Długo więc bardziej opłacało się aby nie wszystkie maszyny na hali pracowały i nie wszyscy opłaceni pracownicy rzeczywiście pracowali. Aż pewnego razu, ktoś w fabryce postanowił wdrożyć system zarządzania produkcją. Koszt był niemały, oprogramowanie trzeba było stworzyć na zamówienie, kupić sprzęt komputerowy, zadbać o sieć na terenie fabryki i przeszkolić z używania programu wszystkich pracowników. Czytaj dalej »
2012-03-14
Od wersji SQL 2012 ORDER BY zostało powiększone o klauzulę OFFSET. Pozwala ono stronicować dane sortowane w okręlsonym porządku. Zobacz następujący przykład:
USE TEMPDB
CREATE TABLE TestNumber (ID INT)
DECLARE @i INT=0
WHILE @i<100
BEGIN
SET @i+=1
INSERT TestNumber VALUES (@i)
END
SELECT ID FROM TestNumber
ORDER BY ID
OFFSET 50 ROWS FETCH NEXT 10 ROWS ONLY
W testowej tabelce jest 100 rekordów (liczby ID od 1 do 100). SELECT wyświetli tylko rekordy od 51 do 60:
- OFFSET mówi, że 50 pierwszych rekordów należy pominąć
- FETCH mówi ile tych rekordów należy pobrać.
Element FETCH można pominąć.
2012-03-14
Kiedy w SQL 200o tworzyłbyś taką tabelę:
CREATE TABLE LargeTable(
x varchar(8000),
y varchar(8000)
)
otrzymałbyś ostrzeżenie:
Warning: The table 'LargeTable’ has been created but its maximum row size (16025) exceeds the maximum number of bytes per row (8060). INSERT or UPDATE of a row in this table will fail if the resulting row length exceeds 8060 bytes.
Rzeczywiście serwer mógł przechowywać wyłącznie rekordy o maksymalnym rozmiarze 8060B, jeśli zaś trzeba było używać dużych typów należało korzystać z typu text. Czytaj dalej »
2012-03-14
Kiedy defragmentować indeks, to jedno z najczęstszych pytań na szkoleniach.
Tutaj nie tłumaczę, jak jest zbudowany indeks, ani na czym polega defragmentacja. Nie wyjaśnię nawet składni polecenia DBCC REORGANIZE ani DBCC REBUILD. Powtórzę jednak za blogiem Paula Randal wartości przy których należy uruchomić odpowiednie polecenia.
Przyznam, że szczera odpowiedź na pytanie „Kiedy mam uruchomić REBUILD, a kiedy REORGANIZE, a kiedy zupełnie się tym nie przejmować” brzmi to zależy od:
- rodzaju bazy danych i tego jak użytkownicy wykorzystują tę bazę danych (OLTP/OLAP)
- rodzaju zastosowanych technologii wysokiej dostępności (high aviability)
- parametrów serwera (wielkość dysku, ilość pamięci)
- zapytań wykonywanych przez użytkowników
- stategii backupu
- itp. Czytaj dalej »