Provera JMBG

Objavljeno: 29-09-2014 | Autor: Nenad Živković | Kategorija: Funkcije

0

Jedinstveni matični broj građana ili skraćeno JMBG uveden je sedamdesetih godina prošlog veka u tadašnjoj Jugoslaviji i, kako mu i ime kaže, predstavlja jedinstveni identifikacioni broj koji je dodeljivan svakom građaninu. Osim u Hrvatskoj, gde je u procesu zamene, JMBG je, i danas, u upotrebi u svim novonastalim državama od bivših republika SFRJ. Kao takav, JMBG se danas nalazi u gotovo svakoj bazi koja čuva podatke o fizičkim licima, makar kao opisno polje, a zbog svoje jedinstvenosti često je i primarni ključ takvih tabela.

Sam JMBG sastoji se od 13 cifara koje sa sobom nose određene informacije, kao što su datum i mesto rođenja ili pol osobe. Više detalja o samom JMBG-u možete pročitati na Wikipedia članku, a mi smo vam pripremili par SQL skriptova pomoću kojih možete izvući te podatke i proveriti validnost samog broja.

Izmena postojeće kolone u identity kolonu

Objavljeno: 11-09-2014 | Autor: Žana (Jovana) Baćović | Kategorija: T-SQL

Ознаке:

0

Identity kolona predstavlja kolonu kojoj SQL Server automatski dodjeljuje vrijednost (broj) iz niza brojeva kojim je definisan. Taj niz je definisan početnom vrijednošću i inkrementom tj. vrijednošću za koju se početna vrijednost uvećava prilikom unosa novog reda.
Prilikom kreiranja tabele, sintaksa za kreiranje identity kolone je sledeća:

CREATE TABLE dbo.TestKefalo
(ID INT IDENTITY(1,1));

Prvi broj u IDENTITY(1,1) predstavlja početnu vrijednost a drugi broj vrijednost inkrementa.
Analogno se u tabeli dodaje identity kolona, naredbom ALTER TABLE ADD.

String funkcije (2. deo)

Objavljeno: 29-07-2014 | Autor: Miloš Milenković | Kategorija: Funkcije, T-SQL

Ознаке:

1

U jednom od prethodnih članaka (String funkcije (1. deo)) smo opisali neke od najčešće korišćenih funkcija za rukovanje stringovima. Ovaj članak donosi opis nekih manje poznatih funkcija.

SPACE funkcija kao rezultat vraća onoliko praznih mesta koliko prosledimo kao parametar. Sintaksa je SPACE(broj) gde parametar broj predstavlja praznih mesta.
Na osnovu opisanog ponašanja funkcije možemo zaključiti da je rezultat sledećeg upita:

SELECT 'SQL' + SPACE(5) + 'KEFALO';

niz karaktera SQL KEFALO.

CONCAT funkciju koristimo za povezivanje 2 ili više niza karaktera u jedan niz (string). To postižemo sintaksom: CONCAT(string1, string2, string3 … stringN), gde svaki od parametara predstavlja niz karaktera. Neophodno je proslediti najmanje 2 parametra, u suprotnom će se javiti greška. Pre povezivanja parametara, vrši se njihova implicitna konverzija u string. NULL vrednosti se implicitno konvertuju u prazan string. Tip podatka rezultata zavisi od parametara koje smo prosledili. Ukoliko je bar jedan od parametara UNICODE tipa (nchar/nvarchar) rezultat će biti UNICODE. U suprotnom će rezultat biti char/varchar. Što se tiče dužine, i ona zavisi od ulaznih parametara. Ako bar jedan od stringova na ulazu ima dužinu MAX (npr. varchar(max)) i rezultat će imati dužinu MAX. U ostalim slučajevima dužina rezultata je jednaka zbiru dužina pojedinačnih stringova.
Ukoliko izvršimo upit:

Izvršavanje upita na više servera odjednom

Objavljeno: 02-07-2014 | Autor: Milen Blagojević | Kategorija: Management Studio

0

U SQL Server Management studiju postoji mogućnost izvršavanja istog upita (ili bilo koje druge komande) na više servera odjednom. Ovo je omogućeno pomoću funkcionalnosti za grupisanje SQL Servera (Local Server Groups).

U nastavku članka biće objašnjeno kako se kreiraju grupe servera, ali usput i kako se koristi sama opcija registrovanja servera, koja služi kao svojevrsni bookmarks vaših servera. Tab ‘Registred Servers’ obično je dostupan na levoj strani SSMS-a, a u slučaju da nije, otvara se iz menija preko opcije View->Registred Servers ili prečicom sa tastature CTRL+ ALT + G.

U ovom primeru grupišem svoje development servere. Nakon otvaranja taba ‘Registred Servers’, desnim klikom na ‘Local Server Groups’ otvara se dijalog za dodavanje nove grupe servera (New Server Groups):

Agregirani bitovi

Objavljeno: 19-06-2014 | Autor: Nenad Živković | Kategorija: Funkcije, T-SQL, Trikovi

Ознаке: , , ,

0

Ukoliko dobijete ideju da proverite da li u nekoj BIT koloni postoji makar jedna vrednost true ili makar jedna vrednost false, možda će vam prvo pasti na pamet ideja da iskoristite agregatne funkcije MAX() ili MIN() i lako proverite da li su sve vrednosti iste, s obzirom da postoje samo dve moguće vrednosti.

Međutim, ako pokušate da izvršite komandu:

SELECT MAX(UBoji) FROM dbo.CrtaneEpizode;

ubrzo ćete udariti u zid pošto se javlja sledeća greška:

Msg 8117, Level 16, State 1, Line 1
Operand data type bit is invalid for max operator.

String funkcije (1. deo)

Objavljeno: 27-05-2014 | Autor: Miloš Milenković | Kategorija: Funkcije, T-SQL

Ознаке:

2

SQL Server nudi veliki broj ugrađenih funkcija za rukovanje stringovima. Neke od njih su dobro poznate i često korišćene, dok su neke manje poznate ili su uvedene u novijim verzijama SQL servera. Predstavićemo sve string funkcije kroz nekoliko članaka. U prvom vas podsećamo na one najpoznatije i najkorišćenije.

SUBSTRING je funkcija koja kao rezultat vraća deo stringa koji prosledimo kao prvi parametar. Sintaksa je SUBSTRING(string, početak, dužina) gde prvi parametar string predstavlja bilo koji niz karaktera tipa char/varchar/text, nchar/nvarchar/ntext ili binary/varbinary/image. Tip podatka u kome ćemo dobiti rezultat zavisi od tipa ovog ulaznog parametra. Ukoliko ulazni parametar ima jedan od tipova iz prve grupe (char/varchar/text), rezultat je tipa varchar. Ako kao ulazni parametar prosledimo string tipa nchar/nvarchar/ntext, rezultat ćemo dobiti kao nvarchar, dok za binary/varbinary/image dobijamo varbinary. Drugi parametar označava poziciju u prvom parametru od koje počinje odsecanje karaktera, a treći parametar predstavlja dužinu željenog dela stringa koji smo prosledili kao prvi parametar.

PIVOT sa promjenljivim brojem kolona – dinamički pivot

Objavljeno: 06-05-2014 | Autor: Žana (Jovana) Baćović | Kategorija: T-SQL

Ознаке:

1

Relacioni operator PIVOT u T-SQL-u se koristi za rotiranje tabele, tako što jedinstvene vrijednosti kolone transformiše u toliki broj kolona, pri čemu obavlja potrebne agregacije nad vrijednostima preostalih kolona. Jednostavnije rečeno, prevodi vertikalno orjentisanu tabelu u horizontalno orjentisanu tj. sa nivoa redova prelazi se na nivo kolona.
Često je skup vrijednosti kolone od koje kreiramo nove kolone konačan (ili želimo da prikažemo samo određene vrijednosti) i tada se, za taj skup, koristi PIVOT za predefinisani skup kolona.

Nekada je skup vrijednosti kolone koju želimo da pivotiramo po svim vrijednostima promljenljiv i tada se koristi dinamički pivot.

Primjer: Nad SQL Kefalo bazom kreirati upit koji kao rezultat daje broj epizoda za svaki crtać, po svim godinama u kojima su epizode proizvedene. Godine proizvodnje prikazati kao kolone.
Pošto je spisak godina proizvodnje promjenljiv, prvi korak je da se kreira taj spisak, koji će predstavljati spisak kolona u PIVOT-u. Ova konkatenacija stringa može da se uradi na više načina, kao što je opisano u prethodnim člancima:

Konkatenacija string vrednosti iz razlicitih redova (1. deo)
Konkatenacija string vrednosti iz razlicitih redova (2. deo)

Koristićemo primjer sa FOR XML PATH i STUFF funkcijom:

tempdb

Objavljeno: 23-04-2014 | Autor: Milen Blagojević | Kategorija: Administracija, Saveti

0

Tempdb je sistemska baza dostupna svim korisnicima konektovanim na SQL Server i u njoj se čuva sledeće:

  • Privremeni objekti koji su eksplicitno kreirani, kao što su globalne i lokalne privremene tabele, privremene procedure, tejbl varijable ili kursori.
  • Interni objekti koji su kreirani od strane SQL Servera kao što su privremene tabele kreirane za čuvanje rezultata prilikom sortiranja ili join-ovanja.
  • Verzije redova iz tabela koje se generišu transakcijama u bazama koje koriste read-commited row versioning isolation ili snapshot isolation.
  • Verzije redova iz tabela koje se generišu transakcijama za: online indeks operacije, Multiple Active Result Sets (MARS) i AFTER trigere.

Operacije koje se izvršavaju u tempdb su minimalno logovane. Ovo omogućava da transakcije mogu biti rollback-ovane. Tempdb je baza koja se rekreira svakog puta kada se SQL Server startuje tako da sistem uvek kreće sa potpuno praznom tempdb bazom. Privremene tabele i procedure se automatski brišu prilikom diskonektovanja korisnika. Zbog toga ne postoje nikakvi objekti koji mogu biti sačuvani iz jedne sesije u drugu. Backup i restore operacije nisu dozvoljene nad tempdb.

Ovo su inicijalne vrednosti za tempdb fajove sa podacima i logom (ove vrednosti variraju u zavisnosti od verzije SQL Servera):

Fajl Logičko ime Fizičko ime Rast fajla
Podaci tempdev tempdb.mdf Automatski rast po 10% dok disk nije pun
Log templog templog.ldf Automatski rast po 10% do maksimuma od 2 TB

Veličina tempdb može uveliko uticati na performanse sistema. Na primer, ako je veličina tempdb premala, sistem može biti previše opterećen sa automatskim rastom umesto da izvršava zadatke. Ovo se može izbeći povećanjem veličine tempdb. Takođe, ukoliko je tempdb prevelika može ugroziti druge sisteme koji koriste isti disk, pa je preporuka uvek izdvajati tempdb na poseban disk na kome nije ni jedna druga korisnička baza, niti sistemski fajlovi.

Kreiranje XML-a za svaki red u tabeli

Objavljeno: 01-04-2014 | Autor: Nenad Živković | Kategorija: T-SQL, Trikovi, XML

0

Nedavno smo objasnili kako se tabela ili rezultat nekog upita mogu pretvoriti u XML. Kao mala dopuna tog članka, danas ćemo prikazati i trik kako se svaki red tabele može pretvoriti u zaseban XML.

Već objašnjena sintaksa FOR XML sada se koristi unutar podupita, a kao uslov se dodaje JOIN tabele sa samom sobom:

SELECT 
	CrtacID
  , Naziv
  , Opis
  , (
		SELECT cfx.*
		FROM dbo.CrtaniFilmovi cfx
		WHERE cfx.CrtacID = cf.CrtacID
		FOR XML PATH ('')
	) AS CrtacXML
FROM dbo.CrtaniFilmovi cf;

XML za svaki red u tabeli

Slanje mailova korišćenjem Database Mail komponente

Objavljeno: 26-03-2014 | Autor: Miloš Milenković | Kategorija: Administracija, Alati, Management Studio, T-SQL

Ознаке:

0

Database Mail je SQL Server komponenta koja omogućava developerima i administratorima slanje e-mail poruka iz SQL Server Database Engine-a. Primarna upotreba ove komponente bi trebalo da bude slanje raznih obaveštenja administratorima (u slučaju da dođe do neke greške, opterećenja ili zagušenja na serveru i sl.), ali se može koristiti i za slanje rezultata upita, obaveštavanje developera da se izvršio neki triger itd.

Ostvaruje se korišćenjem sistemske stored procedure sp_send_dbmail. Pre poziva stored procedure, potrebno je napraviti Database Mail nalog i profil koji se kasnije koriste za slanje maila. Oni sadrži podatke kao što su naziv mail servera i email adresa sa koje se šalje mail.