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.

CONTEXT_INFO

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:

Ažuriranje (update) view – a

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:

Ukoliko pokušate da izvršite update:

SQL Server će prijaviti grešku da view ima izvedeno ili konstantno polje i neće izmijeniti podatke.

Rekurzivni CTE za kreiranje datuma

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:

Kolacije (Collation)

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.

Konkatenacija string vrednosti iz razlicitih redova (2. deo)

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.

Konkatenacija string vrednosti iz razlicitih redova (1. deo)

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,

zahtev bi bio sledeći:

Kreiranje XML-a iz SQL tabele

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:

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:

Nenamerni korelacioni podupiti

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.

Dodaćemo vrednosti 1 i 3 u tabelu #OdabraniCrtaci, i sadržaj obe tabele će izgledati ovako:

Čitanje i upisivanje podataka u Excel uz pomoć T-SQL-a

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.