SQLServer.iz.rs Prvi domaci sajt o MS SQL serveru

1Apr/130

SQL Injection, duhovit primer

SQL Injection, duhovit primer

SQL Injection (u bukvalnom, retko korišćenom prevodu "ubrizgavanje SQL-a") je tehnika napada na neki sajt ili uopšte softver, koji za čuvanje podataka koristi neki od sistema za baze podataka koji radi sa SQL-om (SQL Server, MySQL, Oracle itd.).

Suština ove tehnike je ubacivanje SQL iskaza u polja na sajtu ili nekom drugom programu koja su predviđena za unos nekih podataka. SQL Injection se najčešće koristi za pokušaj dobijanja administratorskih privilegija na nekom sajtu, mada ima i dosta drugih primera.

Nastavak

1Mar/130

EMS SQL Manager for PostgreSQL – alat za svaki dzep

EMS SQL Manager for PostgreSQL – alat za svaki dzep

PostgreSQL (ili samo Postgres) je sistem za upravljanje bazama podataka nastao još osamdesetih godina na Univerzitetu Kalifornija. Sredinom devedesetih je postao otvorenog koda i u ovom trenutku je jedan od najkorišćenijih sistema ovog tipa. Ono što je kod njega specifično je da ne postoji jedan zvaničan GUI alat za upravljanje serverom ili bazama, što može ponekad da zbuni nove korisnike.
Za sve takve, koji muku muče sa softverom za pristup i administraciju PostgreSQL baza, rešenje može biti EMS-ov SQL Manager.  Kompanija EMS proizvodi veliki broj softvera za baze podataka, i to za sve najveće RDBMS sisteme: SQL Server, Oracle, MySQL, Interbase/Firebird i PostgreSQL.

 

Splash screen za SQL Manager

Nastavak

15Jan/132

Delphi i ADO muke

Delphi i ADO muke

Evo primera jedne linije Delphi koda koja mi je dva dana zadavala glavobolje:

MyQuery.SQL.Add('-- add join with a future mapping table');

posle ovog upita ide neki update koji neće pa neće da se izvrši.
Ja sam samo hteo da stavim sebi komentar da uskoro treba da se posvetim ovom upitu, dodam join sa tabelom za mapiranje, ali sam napravio belaj.

Šta se desilo?

ADO se potpuno zbunio, mučio, pokušavao neke čudne stvari:

SET NO_BROWSETABLE ON
go
declare @P1 int
set @P1=NULL
exec sp_prepare @P1 output, NULL, N'SELECT * FROM with', 1
select @P1
go
SET NO_BROWSETABLE OFF
go

Kada se ovaj poslednji kod pusti u Query analyzer-u (ili SSMS-u) puca, jer tabela with ne postoji. I što je najgore, ADO mi nije davao nikakvu poruku o grešci, samo počeo čudno da se ponaša.

I, da rezimiram - uzdržite se od komentara koji mogu da sadrže neke ključne reči T-SQL-a, jer vas mogu dobro namučiti.

Tagged as: , , 2 Comments
19Nov/120

Misao dana – learning SQL

Misao dana – learning SQL

The biggest obstacle to learning SQL is unlearning procedural programming.

Autor ove rečenice je SQL majstor Joe Celko. Pominje se u nekim njegovim knjigama, nastupima na konferencijama i sl. Ne mogu reći da je u pitanju neka univerzalna istina, ali je iz mog iskustva više puta potvrđeno.

Programersku karijeru sam započeo (i još uvek traje) kao Pascal / Delphi programer. I tu sve lepo radi, brzo, uzmem neki set podataka, provrtim kroz 2-3 petlje i eto rezultata.
Nastavak

14Nov/120

Novo na sajtu

Novo na sajtu

Dodati dugmići za deljenje sadržaja sa sajta putem društvenih mreže. Probajte. Podelite sa svojim prijateljima :)

Takođe, uskoro nas očekuje redizajn sajta.

U pripremi su i dva nova teksta, drugi deo teksta o Transaction Logu kao i nastavak priče o istoriji SQL Servera.

 

 

 

23Sep/120

Talend Open Studio – besplatna ETL alternativa

Talend Open Studio – besplatna ETL alternativa

Talend je jedna od najvećih svetskih kompanija koje proizovode softver otvorenog koda. Njihov najpoznatiji proizvod, koji ovom prilikom želim da predstavim, je Talend Open Studio for Data Integration (skraćeno TOS). Ovaj softver je prvi put predstavljen tržištu 2006. godine, nakon dve godine imao milion korisnika, a danas preko 20 miliona.
Proizvodi ove firme su inače podeljeni u dve serije: Open (besplatni) i Enterprise (komercijalni). Nisam imao priliku da radim sa nekim od njihovih komercijalnih proizvoda, ali Talend Open Studio koristim već nekoliko meseci i zadovoljava sve moje poslovne potrebe.

Logo Talenda
Nastavak

11May/121

Transaction log, prvi deo – osnovni podaci i struktura

Transaction log, prvi deo – osnovni podaci i struktura

Transakcija nad bazom podataka se sastoji od jedinice rada izvršene u okviru sistema za upravljanje bazama podataka (ili sličnog sistema), takve da se tretira na koherentan i pouzdan način, nezavisna od drugih transakcija. Transakcije nad bazama podataka imaju dve glavne svrhe:
1. Da omoguće pouzdano izvršavanje jedinica rada koje takvih da je moguć oporavak od greški, i da baza podataka ostaje konzistentna čak i u slučaju sistemskih grešaka, kada se izvršavanje prekine (u potpunosti ili delimično) i mnoge operacije nad bazom ostanu nedovršene ili sa nejasnim statusom.
2. Da omoguće izolaciju među programima koji istovremeno pristupaju bazi podataka. Bez izolacije, rezultati programa mogu da budu pogrešni.
Transakcija nad bazom podataka po definiciji mora da bude atomična,(engl. atomic), konzistentna (engl. consistent), izolovana (engl. isolated) i trajna (engl. durable).Skraćenica koja označava ovaj skup osobina je ACID (od početnih slova engleskih reči za ove četiri osobine).

Izvor: Wikipedia

Šta je u stvari transakcija? Recimo da imamo dve operacije u nekom knjigovodstvenom softveru – skidanje iznosa sa jednog računa i zatim dodavanje istog iznosa nekom drugom računu. Šta se dešava ako nestane struje posle prve operacije? Prvi račun je „osiromašio“ za neki iznos, ali se sredstva gube jer se ne nalaze na ciljnom računu. Tu stupaju na scenu transakcije, koje nam omogućavaju da dve pomenute operacije posmatramo kao celinu.
Nastavak

27Apr/120

Humor

Humor

Nisam pisao neko vreme, zbog raznih obaveza, ali sam polako počeo da spremam nove tekstove. Za početak, i da u smehu provedemo ove tople dane, malo humora u vezi sa SQL Serverom i bazama podataka uopšte.

Verovatno najpoznatiji humoristički strip o SQL-u je "Exploits of a mom":

 

 

 

Nastavak

16Jan/120

SQL Azure – baza u oblaku

SQL Azure – baza u oblaku

SQL Azure je deo Microsoft-ove Windows Azure platforme koji je već neko vreme dostupan kao skup servisa u Oblaku. SQL Azure se stalno menja kako vizuelno, zato što se stalno poboljšava Silverlight administrativna aplikacija, tako i funkcionalno. Mislim da je vreme da mu posvetimo malo više vremena, jer sam duboko ubeđen da je SQL Server u Oblaku, bilo privatnom ili javnom, budućnost.

SQL Azure je nešto novo u svetu SQL Servera, i svakakom od nas će dobro doći da se sa njim bolje upozna. Moj bivši kolega Goran Milanov piše vrlo kvalitetan i interesantan blog za MS Academic zajednicu, i da ne bih ja otkrivao toplu vodu, preporučujem da posetite njegov blog i saznate više o SQL Azure-u.

Tagged as: No Comments
30Dec/111

5 nacina da optimizujete upit ili proceduru

5 nacina da optimizujete upit ili proceduru

U pred-novogodišnjem periodu su vrlo popularne liste tipa – Top X ovoga ili onoga, Y stvari koje morate da uradite u novoj godini i sl. Pa tako i na našem malom sajtu dajemo jednu kratku listu stvari koje možete uraditi brzo a dobiti opipljive rezultate.

Ograničiti količinu ulaznih podataka
Mnogo (u stvari previše) puta sam video da jedan upit uzima sve moguće podatke, nešto radi sa njima, prosleđuje drugom upitu, da bi ih tek u poslednjem koraku filtrirao tj. primenio neke uslove koji smanjuju količinu izlaznih redova. Ovakav pristup je očigledno pogrešan. Možda deluje komplikovanije da se u inicijalnom uzimanju podataka primene i uslovi (filteri) ali performanse mogu biti višestruko poboljšane ako se sve vreme radi sa manjom količinom podataka.

Indeksi
Kako na čvrstim tako i na privremenim tabelama, važno je dobro definisati indekse. Pogotovo je važno imati indekse na kolonama preko koji se rade Join-ovi. Zamislite traženje broja u telefonskom imeniku bez indeksa i biće vam sve jasno.

Razmišljati o skupovima
SQL je zamišljen tako da radi sa velikim količinama podataka i za to je optimizovan. Ako nešto radi red po red, u konfliktu je sa onim u čemu je svaki RDBMS (pa tako i SQL Server) najbolji.

Koristiti temp tabele (ili promenljive tipa Table) u procedurama
Mogu biti višestruko korisne:
Ako se dobro definišu i stave adekvatni indeksi – ubrzavaju rad
Često čine proceduru čitljivijom, odnosno posao dele u više manjih celina
Omogućavaju nam da izbegnemo korelisane upite.

Execution plan moj dobar drugar
Pokazaće nam gde grešimo, a neke stvari odmah upadaju u oči i već na prvi pogled dosta govore: broj redova sa kojima upit radi, Query cost, Table scan i sl.

Srdačan pozdrav i srećni praznici!