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.
Objavljeno: 14-03-2014 | Autor: Milen Blagojević | Kategorija: T-SQL, Trikovi
0
Context informacija je binarna vrednost veličine do 128 bajtova koja se može postaviti na nivou sesije i koristiti u procedurama, trigerima ili funkcijama koje se izvršavaju u okviru iste sesije.
Postoje dve komande koje se koriste za postavljanje i čitanje ove informacije:
- SET CONTEXT_INFO – za upisivanje vrednosti
- CONTEXT_INFO () – za čitanje vrednosti
Ova vrednost se takođe može pročitati i u sledećim DMVs:
- sys.dm_exec_requests
- sys.dm_exec_sessions
- sys.sysprocesses
Primer:
Objavljeno: 10-03-2014 | Autor: Žana (Jovana) Baćović | Kategorija: T-SQL, View-ovi
0
View može da služi samo za čitanje podataka (read only view) ili da bude promjenljiv, odnosno da nad njim mogu da se pišu dml (Data Manipulation Language) naredbe update, insert i delete.
Read only view
Postoji više načina da view bude read only, navešću samo jedan pošto nisu tema ovog članka.
Read only svojstvo view-a može da se postigne i tako što se na kraju upita koji ga kreira doda union all sa uslovom koji neće biti zadovoljen.
Primjer: Nad Kefalo bazom izvršiti sledeći upit:
|
CREATE VIEW dbo.NadimciAutoraReadOnly (AutorID, Nadimak) AS SELECT AutorID, Nadimak FROM dbo.Autori UNION ALL SELECT 0,'' WHERE 1=0 |
Ukoliko pokušate da izvršite update:
|
UPDATE dbo.NadimciAutoraReadOnly SET Nadimak = 'Peyo nadimak' WHERE AutorID = 1001; |
SQL Server će prijaviti grešku da view ima izvedeno ili konstantno polje i neće izmijeniti podatke.
Objavljeno: 05-03-2014 | Autor: Nenad Živković | Kategorija: T-SQL, Trikovi
0
Ukoliko vam je potrebno da izvučete sve datume u nekom periodu, to možete učiniti uz pomoć rekurzivnog CTE kome zadate početni i krajnji datum. U baznom delu se selektuje početni datum, a u rekurzivnom dodaje po jedan dan dok ne stigne do krajnjeg. Primer je u sledećem upitu:
|
DECLARE @pocetni DATE; DECLARE @krajnji DATE; SET @pocetni = '20131226'; SET @krajnji = '20140304'; WITH datumi AS ( SELECT @pocetni AS DT UNION ALL SELECT DATEADD(DD, 1, DT) FROM datumi WHERE DATEADD(DD, 1, DT) <= @krajnji ) SELECT * FROM datumi OPTION (MAXRECURSION 0); |
Objavljeno: 27-02-2014 | Autor: Miloš Milenković | Kategorija: T-SQL
0
Kolacija se može definisati kao skup pravila koji određuje kako se neki karakter ponaša u određenom jeziku. Najznačajni uticaj ima na sortiranje i poređenje karaktera. U principu, svaki jezik ima svoju kolaciju, koja može biti slična ili čak identična nekoj drugoj. Preko kolacije se definiše osetljivost na veličinu slova, oznake akcenta, tipove kana karaktera i širinu karaktera.
- Osetljivost na veličinu slova: Ukoliko je podešena osetljivost na veličinu slova, SQL Server će različito tretirati A i a, B i b itd., zbog toga što je ASCII vrednost ovih karaktera različita. Ukoliko nije uključena osetljivost na veličinu slova, navedeni parovi karaktera će biti jednaki za SQL Server.
- Osetljivost na oznake akcenta: Ukoliko je uključena osetljivost na oznake akcenta, SQL Server će različito tretirati a i á, o i ó itd. U suprotnom, navedeni parovi karaktera će se prilikom poređenja i sortiranja smatrati jednakim. Ovo je posebno važno kada radimo sa jezicima koji imaju ovakve znakove u pismu.
- Osetljivost na tipove kana karaktera je specifična za japanski jezik. Ukoliko je uključena, Hiragana and Katakana karakteri će se tretirati kao različiti, u suprotnom kao jednaki.
- Osetljivost na širinu karaktera se odnosi na veličinu karaktera u bajtovima. Ukoliko je uključena, dva ista karaktera od kojih je zbog različitih tipova podataka jedan veličine jednog bajta, a drugi veličine dva bajta će se smatratiti različitim, a u suprotnom jednakim.
Objavljeno: 18-02-2014 | Autor: Tatjana Mađer | Kategorija: T-SQL
2
Vrlo često se programeri susreću sa zahtevom da prikažu u aplikaciji izveštaj koji sadrži sumarne rezultate gde je potrebno prikazati u posebnoj koloni svakog sumarnog reda sve članove koji učestvuju u agregatnom redu.
U prethodnom delu ovog članka, objašnjeni su načini konkatenacije string vrednosti ukoliko je unapred poznat i ograničen broj redova i stringova koje treba spojiti.
Nepoznat broj redova
Slučajevi sa kojima se developeri najčešće susreću su oni kada je broj redova nepoznat. U ovim slučajevima je kod komplikovaniji i zahteva napredno poznavanje transakcionog SQL jezika. Varijanti za rešenje ovog problema ima više i najinteresantnije će biti objašnjene u nastavku.
a) Korišćenje rekurzije uz pomoć CTE analogno generisanju hijerarhije. CASE u rekurzivnom delu upita je stavljen da bi se izbegao zarez na prvom mestu rezultata konkatenacije, što se može postići i na drugi način. Glavni nedostatak ove metode je to što brzina izvršavanja ovog upita postaje nezadovoljavajuća sa porastom broja nivoa. Treba obratiti pažnju i na sledeće: s obzirom na to da je podrazumevani limit za broj nivoa u rekurziji 100, preporuka je koristiti hint MAXRECURSION koji omogućava definisanje maksimalnog broja nivoa u rekurziji, gde je omogućeno definisati i beskonačan broj redova (Maxrecursion 0) što je i urađeno u narednom primeru.
Objavljeno: 11-02-2014 | Autor: Tatjana Mađer | Kategorija: T-SQL
3
Vrlo često se programeri susreću sa zahtevom da prikažu u aplikaciji izveštaj koji sadrži sumarne rezultate gde je potrebno prikazati u posebnoj koloni svakog sumarnog reda sve članove koji učestvuju u agregatnom redu.
Konkretan primer u bazi SQL_KEFALO ukoliko imamo tabelu sa crtanim filmovima i tabelu sa epizodama za svaki crtani film,
|
select E.*, F.Naziv as NazivCrtaca from dbo.CrtaneEpizode E inner join dbo.CrtaniFilmovi F on E.CrtacID=F.CrtacID |
zahtev bi bio sledeći:
Objavljeno: 05-02-2014 | Autor: Žana (Jovana) Baćović | Kategorija: T-SQL, XML
1
Ako želite da kreirate jednostavan XML koristeći podatke iz SQL tabele, to možete da uradite koristeći XML Path mod u FOR XML klauzuli.
Primjer: Prikazivanje svih crtanih filmova iz Kefalo baze, sa zaglavljem SpisakCrtaca možete da uradite na sledeći način:
|
SELECT Naziv FROM dbo.CrtaniFilmovi FOR XML PATH(""),ROOT("SpisakCrtaca"),TYPE |
Kreiranje XML-a sa hijerarhijom
Ukoliko želite da kreirate XML koji sadrži ugnježdene elemente, jedan od načina je da koristite AUTO mod u FOR XML klauzuli.
Primjer:
Objavljeno: 02-02-2014 | Autor: Nenad Živković | Kategorija: T-SQL
0
Neki od vas znaju šta su korelacioni podupiti (correlated subqueries) i možda ih i koristite. Neki ne znaju i mogu da žive i bez njih. Problem, i to veliki, i jednim i drugim, može da nastane kada upotrebe takve podupite, a da toga nisu ni svesni.
Za primer uzećemo tabelu CrtaniFilmovi iz Kefalo baze, koja kao primarni ključ ima kolonu CrtacID i kao drugu pomoćnu tabelu kreiraćemo temp tabelu #OdabraniCrtaci koja će imati samo jednu kolonu ID.
|
CREATE TABLE #OdabraniCrtaci (ID INT); INSERT INTO #OdabraniCrtaci (ID) VALUES (1),(3); |
Dodaćemo vrednosti 1 i 3 u tabelu #OdabraniCrtaci, i sadržaj obe tabele će izgledati ovako:
Objavljeno: 30-01-2014 | Autor: Miloš Milenković | Kategorija: T-SQL, Trikovi
2
Ukoliko postoji potreba da se podaci iz nekog Excel dokumenta učitaju u bazu ili da se iz baze izvezu u Excel najčešće se koristi SQL Server Import/Export Wizard (što smo objasnili u prethodnom članku), koji u stvari predstavlja grafički interfejs za kreiranje SSIS paketa kojim se vrši prebacivanje podataka. U slučaju da postoji potreba da se postave neka dodatna podešavanja, najbolje rešenje je otvaranje i editovanje SSIS paketa kreiranog kroz pomenuti Wizard ili kreiranje novog korišćenjem BI Development Studio-a. Međutim, u nekim slučajevima ovaj proces može biti previše komplikovan i zamoran.
Jednostavno rešenje za brzo upisivanje ili iščitavanje podataka iz Excel-a je korišćenje metode OPENROWSET. Osnovna funkcija ove metode je brz i jednostavan pristup linkovanom serveru, a u ovom slučaju je linkovani server ništa drugo do instanca Excela.