5 dolog amit SOHA nem csinál egy adatbázis fejlesztő

Milyen jó is a késő esti munka főleg mert 6 órás időzona különbséggel dolgozom. Nem kellene, de mégis. Az ok nagyon egyszerű: amíg szabadságon voltam pár dolgot megváltoztattak, mert úgy gondolták páran, hogy az jó. Most javíthatom az egészet dolgozhatok egy bonyolúlt deployment scripten e miatt. Mi az amit *soha* nem szabad csinálni egy táblával: Soha nem nevezünk át oszlopot! Soha  nem változtatunk a tábla oszlopainak sorrendjén (pár kivételes esettől eltekintve). Új oszlopo... [More]

IO figyelmeztetések

Az alábbi figyelmeztetéseket ajánlott minden SQL Server esetében beállítani. A kód kommentjeiben van leírás mindegyikről, illetve a hozzá tartozó Technet cikk is megtalálható. Az értesítéshez emailt használ az alábbi kód, mely feltételezi, hogy a Database Mail szolgáltatás engedélyezve van és beállításra is ke... [More]

Hogyan keressünk meg egy adott értéket egy adatbázisban?

Sokszor találkozom olyan adatbázisokkal, amikor semmilyen vagy nagyon rossz dokumentáció áll rendelkezésre. Ettől többször fordul elő, hogy az alkalmazás által használt értékek adatbázisból jönnek, de még a Profiler sem biztos, hogy jó megoldás annak megfejtésére, hogy honnan is jön az adat, ráadásul sokszor időrabló feladat m... [More]

Hasznos funkció: fnSplit

Sajnos nem minden cég használ legfrissebb verziót egy-egy programból, vagy csak simán egy másik rendszerből érkező adatok nem tudnak olyan funkciókat, amit pl. az SQL Server tud. Ilyen például a TVP – Table Value Parameter. Képzeljük el az az esetet, amikor TVP helyett egy listát kapunk, pl: a,b,c,d. Ahhoz, hogy ezt tábla formában kapjuk meg, az alábbi megoldást szoktam alkalmazni: USE tempdb; GO CREATE FUNCTION [dbo].[fnSplit] ( @text nvarchar(max), @separator char(1) = ',' ) RETU... [More]

SQL Server uptime - ver 2

Megint előjött az a probléma, hogy meg kellett tudni, mikor indult el az SQL Server. De már itt az Agent is érdekes volt. Az előző írásomban ez még nem szerpelt, és nem is kellett. Valami egészen más dolog miatt túrtam a rendszer procikat és view-kat, ekkor találtam rá erre, ami már az Agent indulását is mutatja: SELECT [servicename], [last_startup_time], * FROM sys... [More]

SQL FizzBuzz teszt

Interjú kérdés, aminek semmi értelme, de 10-ből 9-en beugranak és nem a legoptimálisabb megoldást adják :-) Írj egy programot, ami 1-től 100-ig kiírja a számokat. Ha a szám osztható hárommal, akkor írja ki a szám helyett, hogy Fizz, ha osztható öttel, akkor Buzz, ha mind a kettővel osztható, akkor FizzBuzz. Elsőre ezt a megoldást adtam, ami nem rossz, de... [More]

SQL Paging

Van egy alapszabály a lekrédezéseknél, amit nagyon sokan – leginkább az üzleti felhasználók – elfelejtenek, mégpedig az, hogy csakis annyi adatot jelenítsünk meg, amennyire tényleg szükség van és kezelhető mennyiség. Ez valamikor 1 sor, de előfordulhat, hogy több száz sorról van szó. Ez utóbbit egy weboldalon megjeleníteni nem egy jó... [More]

UNIQUE constraint és több NULL érték

Na ez egy igazán egy érdekes probléma: képzeljük el azt az esetet, amikor egy tábla oszlopa engedi a NULL értékeket, de azt is akarjuk, hogy minden egyéb érték egyedi legyen, pl.: USE tempdb; GO CREATE TABLE [dbo].[CheckConstraintTest] ( [id] int NULL, [name] char(1) NULL ); Első körben a UNIQUE constraint jutott eszembe, de ez nem lesz jó. Miért is? Persze, a UNIQUE constraint ne... [More]

Foreign Key hierarchia

  Napokban volt egy bonyolúltabb adatbázis, ahol foreign key alapján meg kellett nézni a kapcsolódó táblákat. Ez még annyira nem is lenne nehéz, de ha a referált tábla is használ foreign key-t, akkor tovább kell menni és megkeresni a többi hivatkozott táblát is. Erre az alábbi megoldást használtam: DECLARE @tablename sysname = 'Sales' ;WITH C... [More]