Blog Archives
Prenos tabele kao argument storne procedure
Na koji način prenijeti tabelu sa podacima u stornu proceduru kao argument?!
Na ovo pitanje i nije baš lako odgovoriti jer se tabela konvencionalno ne može prenijeti kao argument u stornu proceduru. U tom smislu rješenja koja se nude su različita, i kreću se od toga da se tabela eksportuje u tekst, koji je odvojen karakterom za odvajanje, pa se onda kao varchar prenese u stornu proceduru. Poslije toga je potrebno taj isti text vratiti u privremenu tabelu te onda je koristiti. Ovaj postupak pored toga što je potrebno implementirati logiku vraćanja teksta u tabelu, ima mane limitiranja broja karaktera.
SQL Server 2005 posjeduje XML data tip, koji pored mnogih korisnih prednosti ima mogućnost da se definiše kao argument u stornoj proceduri. Na ovaj način moguće je tabelu izvesti u xml i na taj način prenijeti podatke. Obzirom da je manipulacija sa xml-om podržana u SQL koristeći se standardnim operacijama i naredbama.
Kao ilustraciju navedenog problema prikazaćemo mali tutorijal na koji način to možemo postići. U biti formiraćemo .NET aplikaciju u VS 2008, formirati Typed DataSet u kojoj ćemo mapirati jednu tabelu koju treba prenijeti u stornu proceduru, te mapirati stornu proceduru koju smo formirali na sql serveru koja prima XML tip i vraća tabelu koja je prenešena XML u SP.
1. Otvorimo VS 2008, i formirajmo .NET aplikaciju kao na slici:
2. Nakon formiranja aplikacije formirajmo TypedDataSet i nazovimo ga DataSet1.xsd
Napomena: Kada formirate DatSet, potrebno je obrisati NameSpace: http://tempuri.org/DataSet2.xsd
3. U DataSet1 formirajmo DataTable i nazovimo je „Tabela“.
Napomena: Ako pratite tutorijal vrlo je važno da se imenuje DataSet i DataTable istim imenom kao i ovdje, jer SQL kod koji ćemo kasnije formiati bazira se na ovim imenima.
4. U DataSet1 formiramo tabelu bez Adaptera kao na sljedećoj slici:
5. Kada smo formirali tabelu i definisali tipove podataka koje treba da sadrži, sad smo u mogućnosti da napravimo stornu proceduru koja će kao argument prihvatati našu tabelu.
6. Otvorimo NorthWind bazu preko ServerExplorera, u koliko nemate NorthWind bazu uzmite bilo koju ili je skinite sa ms stranice. Formirajne novu stornu proceduru kao na slici:
7. Storna procedura izgleda kao na sljedećoj slici
U biti procedura sadrži kod za formiranje privremene tabele, te ekstraktovanje podataka iz XML-a. Kod ekstrakta podataka potrebno je paziti na nazive DataSeta, naziva tabele, kao i naziva kolona kao što je prikazano.
8. Odabirom “Save” dugmeta zapisujemo proceduru na server. U DataSet-u sada je potrebno proceduru mapirati da bi je mogli prikazati u našoj testnoj aplikaciji.
9. Formirajmo TableAdapter
10. Odaberimo Postojeću proceduru na serveru
11. Odaberimo proceduru koju smo formirali nedavno
12. Na kraju u našem DataSetu imamo dvije tabele. Jedna offline (koju ćemo prenijeti u SP) i druga tabela koja je mapirala našu proceduru.
13. Otvorimo Form1.cs i odvucimo i spustimo naše formirane tabele kao na slici:
14. Implementirajmo Form_Load događaj, te formirajmo dugme “Napuni tabelu iz SP” preko kojeg ćemo pozvati Stornu proceduru.
Napomena: Na gornjoj slici smo formirali metodu za učitavanje podataka u tabelu. Na isti način smo mogli koristiti bilo koju tabelu sa servera, stim što bi je tada napunili preko tableAdaptera iz baze podataka.
15. Implementacija događaja za dugme “Napuni tabelu iz SP” ima sljedeću formu:
Na ovaj način smo završli tutorijal. Potrebno ga je testirati. U koliko je tutorijal pravilno sproveden nakon pokretanja aplikacije, te klikom na dugme „Napuni tabelu iz SP“ dobijamo sljedeći izgled.
U biti formirali smo tabelu, napunili je podacima, prosljedili je u SP, a SP nam je vratila tu istu tabelu.
Izvorni kod sa implementacijom storne procedure može se skinuti sa ovog linka.
MS SQL Server 2008 konfiguracija za remote connection
Zadnji dana bilo mi je potrebno da podesim SQL Server 2008 za konekciju sa drugog računara u mreži. SQL Server 2005 sam bezbroj puta podesio za remote connection koristeći konfiguracijski alat „SQL Server Surface Area Configuration“. Medjutim, u novoj verziji SQL Servera 2008 ovaj alat ne postoji, a podešavanje za remote connection za SQL Sever 2008 na prvi pogled mi je predstavljao problem, obzirom da nisam profesionalac u administriranju SQL Servera. Prije nego što pojasnim konfiguraciju SQL Servera 2008 za remote connection, prikazat ću kako se to radi standardno za SQL Server 2005.
Svaka instalacija SQL Servera (2005 ili 2008) po dafaultu je podešena samo za lokalnu konekciju. To znači da bez prethodnog podešavanja nije moguće pristupiti bazi podataka sa nekog drugog računara u mreži. Ovo je čisto iz sigurnosnih razloga. Da bi omogućili povezivanje na SQL Server sa drugog računara potrebno je na računaru na kojem se instaliran SQL Server podesiti nekoliko stvari i to:
1. Uključiti mrežne protokole za SQL Server (TCP, Named Pipes)
2. Podesiti port preko kojeg će se vršiti razmjena podataka sa SQL Serverom (ili ostaviti standardni port preko kojeg SQL Server komunicira a to je 1433)
3. U Windows Firewallu manuelno napraviti izuzetak za port 1433
Uz SQL Serveru 2005 dolazi poseban alat za konfiguraciju remote connection a to je SQL Server Surface Area Configuration.
Podešavanje Remote Connection za SQL Server 2005
![]()
![]()
Pokretanje opcije „Surface Area Configuration for Service and Connections“ dobijamo prozor za podešavanje SQL Servera za remote connection.
![]()
Sa lijeve strane odaberemo stavku „Remote Connections“, a sa desne strane prozora pikazuje nam se da li je Server podešen samo za lokalne konekcije odnosno Lokalno i remote connection (udaljene konekcije). Podesimo konekciju kao na slici. Kada se podesi konekcija potrebno je restartovati servis da bi promjene bile aktualizirane.
Pored konekcije potrebno je podesiti i SQL Browser. SQL Browser je servis koji obezbjedjuje konekciju na SQL Server. Naime SQL Browser omogućuje da se na jednom računaru mogu instalirati više instanci SQL Servera i da se SQL Serveru pristupa preko naziva instance. Podešavanje SQL Browsera vršimo preko stavke SQL Server Browser.
![]()
Sa ovim smo završili podešavanje SQL Servera 2005 za remote connection. Potrebno je sada da se u Windows Firewall-u napravi izuzetak za port 1433 koji je defaultni port za SQL Server.
Otvorimo Windows Firewall kao na slici:
![]()
Klikom na dugme Add Port… popunimo dijaloški okvir kao na donjoj slici te klikenmo na dugme OK.
![]()
Ovim je podešavanje završeno.
Podešavanje SQL Server 2008 za remote connection
Obzirom da gornji alat ne postoji za podešavanje remote connection za SQL Server 2008 podešavanje se vrši na više klasični način. Važno je napomenuti da procedura koja će biti navedena moguće je podesiti i remote connection i za SQL Server 2005. Podešavanje remote connection vršimo sa drugim alatom kmoji dolazi uz instalaciju SQL Servera 2005 i 2008 a to je SQL Server Configuration Manager.
![]()
Na gornjoj slici vidimo da su protokoli za remote conenction (TCP/IP i Named Pipes) isključeno. Da bi podesili remote connection potrebno je ove potokole uključiti. Da bi uključili TPC/IP protokol potrebno je desnim klikom na stavku izabrati Enable iz iskačućeg menija.
Ako želimo da podesimo port potrebno je odabrati opciju „Properties“ U stavci IPApp dijaloga unesemo broj porta.
![]()
Obzirom da kroz ovaj tutorijal koristimo defaultni port 1433 nije ga potrebno posebno specifirati.
Na isti način kao i kod SQL Servera 2005 potrebno je napraviti izuzetak u Windows Firewall-a za port 1433.
Na ovaj nači podešavanje SQL Servera 2008 za remote connecton je završeno.








