After Insert trigger ne radi prilikom inserta kroz SSIS paket

Objavljeno: 19-02-2015 | Autor: Miloš Milenković | Kategorija: SSIS

2

Često se javlja potreba da se prilikom upisivanja podataka u neku tabelu o tome obaveste određeni korisnici ili da se to negde zabeleži, zajedno sa vremenom kad je podatak upisan i korisnikom koji je izvršio upisivanje. Najpraktičniji način da se ovo uradi je upotreba trigera.

Za ovu priliku, kreiraćemo tabelu u koju će biti upisani pomenuti podaci prilkom svakog dodavanja novog reda u tabelu CrtaniFilmovi u našoj bazi SQL_KEFALO:

CREATE TABLE log_insert
(id int IDENTITY,
CrtacID int,
Naziv nvarchar(50),
Korisnik nvarchar(50),
Datum datetime DEFAULT(GETDATE()));

Zatim na tabeli CrtaniFilmovi kreiramo After Insert triger koji će u kreiranu tablu logovati crtani film koji je dodat u tabelu, kao i naziv korisnika koji je dodao taj novi red u tabelu i vreme dodavanja:

CREATE TRIGGER trg_LogInsert ON CrtaniFilmovi
AFTER INSERT
AS
BEGIN
	INSERT INTO log_insert (CrtacID, Naziv, Korisnik)
	SELECT CrtacId, Naziv, SUSER_SNAME() 
        FROM inserted;
END

Sada možemo da probamo da li kreirani triger radi tako što ćemo dodati novi red u tabelu CrtaniFilmovi, a onda proveriti tabelu log_insert.

String funkcije (3. deo)

Objavljeno: 31-10-2014 | Autor: Miloš Milenković | Kategorija: Bez kategorije

0

Do sada smo u dva članka (String funkcije (1. deo) i String funkcije (2. deo)) opisali većinu funkcija za rukovanje stringovima koje SQL server nudi. U ovom članku, koji ujedno predstavlja i poslednji u nizu članaka o string funkcijama, opisane su neke manje poznate funkcije, koje uprkos tome mogu biti veoma korisne.

Funkcija PATINDEX je veoma slična funkciji CHARINDEX i omogućava nam da pronađemo poziciju jednog stringa u okviru drugog stringa. Unapređenje PATINDEX-a u odnosu na CHARINDEX je u tome što string čiju poziciju tražimo u okviru većeg stringa može sadržati specijalne karaktere kao što su % i _, pa bi se moglo reći da funkcioniše veoma slično funkciji za poređenje LIKE, s tim što kao rezultat vraća poziciju stringa (paterna) u okviru drugog stringa. Sintaksa za upotrebu ove funkcije je PATINDEX(%patern koji se traži%, string koji se pretražuje). Prvi parametar je karakter ili niz karaktera čiju poziciju tražimo u drugom parametru. Potrebno je staviti procente na početku i na kraju stringa koji tražimo, osim ako smo sigurni da želimo da ga nađemo samo na početku ili kraju drugog stringa. U tom slučaju se procenat na početku, odnosno na kraju, može izostaviti. Procenat (%) ili donja crta (_), kao i ostali specijalni karakteri koji se koristi sa LIKE funkcijom, se mogu upotrebiti u srednjem delu prvog parametra. Rezultat poziva funkcije je celobrojna vrednost koja predstavlja poziciju traženog paterna u okviru stringa koji se pretražuje.
Upiti:

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:

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.

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.

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.

Č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.

Čitanje i upisivanje podataka u Excel uz pomoć SQL Server Import/Export Wizarda

Objavljeno: 26-01-2014 | Autor: Miloš Milenković | Kategorija: Alati, Management Studio

Ознаке: , ,

0

SQL Server Import and Export Wizard je alat koji je deo SQl Server Management Studio-a. Koristi se za prebacivanje podataka iz izvora u destinaciju, pri čemu i izvor i destinacija mogu biti tabela iz neke baze, ali isto tako i neki dokument (Excel, tekstualni dokument, csv…). U nastavku je ukratko opisan najpre izvoz podataka iz baze u Excel, a zatim i uvoz podataka iz Excela u bazu.

Da bi se pokrenuo Wizard potrebno je otvoriti SQL Server Management Studio i u Object Explorer-u se pozicionirati na bazu iz koje se izvoze podaci. Desnim klikom se otvara meni iz koga treba izabrati Tasks/Export Data… Ovim je pokrenut Wizard. Najpre treba izabrati izvor.

Izbor izvora

Pošto je Wizard pokrenut iz baze iz koje izvozimo podatke, trebalo bi da su svi parametri već podešeni kako treba. Klikom na Next prelazimo na izbor destinacije.

Slanje izveštaja na mail – SSRS Subscription

Objavljeno: 11-01-2014 | Autor: Miloš Milenković | Kategorija: SSRS

Ознаке: ,

0

Izveštaji kreirani u Reporting Servisima (SSRS) se mogu pogledati on-line na Report Serveru, a takođe mogu biti poslati primaocima kao prilog e-mail poruke. Korisnik ili grupa korisnika se može „pretplatiti“ na neki izveštaj tako što se za njih kreira Subscription. Postoje dva tipa subscriptiona: standardni i data-driven. Standardni ćemo opisati u ovom članku, a data-driven u nekom od narednih.

Pre kreiranja subscriptiona neophodno je da budu ispunjeni sledeći preduslovi:

  • Korisnik koji kreira subscription mora imati Browser prava na izveštaju.
  • Data source izveštaja mora biti podešen tako da koristi „stored credentials“ ili „no credentials“. Ukoliko je podešen na „impersonated credentials“ nije moguće kreirati subscription.
  • Email SMTP server u Reporting Services Configuration Manager-u mora biti podešen.
  • SQL Server Agent mora biti startovan.

Izveštaji se mogu isporučiti na dva načina:

Izračunavanje udaljenosti između dve tačke

Objavljeno: 27-12-2013 | Autor: Miloš Milenković | Kategorija: T-SQL

2

Ukoliko imamo koordinate dve tačke na mapi, veoma lako možemo izračunati udaljenost između njih uz pomoć GEOGRAPHY tipa podatka i funkcija Point i STDistance. Za primer uzećemo Trg Republike u Beogradu kao start i Adu Ciganliju kao cilj.

DECLARE @StartGeoSirina DECIMAL(6,2), @StartGeoDuzina DECIMAL(6,2), @CiljGeoSirina DECIMAL(6,2), @CiljGeoDuzina DECIMAL(6,2);

--start (Trg Republike) 
SET @StartGeoSirina = 20.46;
SET @StartGeoDuzina = 44.82;

--cilj (Ada Ciganlija) 
SET @CiljGeoSirina = 20.42;
SET @CiljGeoDuzina = 44.79;

Zatim od parova koordinata formiramo dve tačke tipa GEOGRAPHY koristeći funkciju