piektdiena, 2010. gada 17. septembris

CLR 'nekonedara' procedūras izveide

Šeit detalizētāk aprakstīts kā var izveidot CLR procedūru, galvenā uzmanība uz to kā realizēt tehniski, nevis kāda jēga no izdarītā :).

Veidojot jauna projektu izvēlās SQL Server Project
SQL Server projekts


Pēc projekta norādīšanas tiek prasīts norādīt datu bāzi. Šajā logā var norādīt kādu no eksistējošām konekcijām, vai arī izveidot jaunu.

Datu bāzes norādīšana


Kad ir norādīta datu bāze, tiek prasīts, vai atļaut atkļūdošanu (debug) uz konkrētā servera. Jāņem vērā, ka šajā režīmā darbinot studiju, SQL Serveris atkļūdošanas laikā apstādina procedūras, trigera vai cita datu bāzes objekta darbību (atkarībā no tā, ko pašlaik atkļūdo). To nekādā gadījumā nevajadzētu darīt uz produkcijas servera, tomēr ja tas tiek darīts tādā veidā, jāņem vērā, ka tas var nopietni traucēt citu lietotāju darbu.

Ja vizuālajai studijai ir pieslēgts versiju kontroles serveris (Tem Foundation Server), tad tam var pievienot arī šo projektu - tādā veidā var vieglāk sekot līdzi izmaiņām, atsaukt tās un strādāt vairākiem cilvēkiem vienlaicīgi ar vienu projektu.

Pēc projekta izveides tiek izveidots tukšs projekts ar vienu AssemblyInfo.cs failu (gadījumā, ja tiek veidots c# projekts. Principā nav nekādas problēmas šo projektu taisīt citā .NET programmēšanas valodā- piemēram, Visual Basic). Šajā failā tiek glabāta informācija par dll failu, kas tiek veidots šā projekta ietvaros- tā versija, izstrādātājs, apraksts un cita informācija. Šī klašu bibliotēka (dll fails) vēlāk tiek uzstādīts uz SQL Server un no tā brīža ir lietojams SQL Serverī.

SQL Server projekts


Tāpat pie šim projektam uzreiz tiek pievienotas trīs atsauces uz citām bibliotēkām, kas iekļautas .NET framework instalācijā- System, System.Data un System.XML.

Bez tā tiek pievienots arī tukšs sql fails, kurā var rakstīt vaicājumus ar mērķi pārbaudīt izveidoto objektu darbības pareizību.

SQL Server projekta ietvaros var rakstīt sekojošus objektus:
· Lietotāja definētas funkcijas
· Lietotāja definētas procedūras
· Agregāt funkcijas
· Trigerus
· Lietotāja definētus tipus

Šo objektu veidošana principā ir ļoti vienkārša. Jāspiež uz izvēlnes „Project” un jāizvēlas, kādu objektu vēlas veidot. Konkrēti piemēru aprakstīšu citā rakstā, šobrīt tikai pamata informācija par pieejamajām iespējām un darbībām, kas jāveic, lai sasniegtu vajadzīgo rezultātu.

Pieejamie objektu tipi


Pēc vajadzīgā izvēlēšanās (šajā gadījumā stored procedure), projektam tiek pievienots jauns *.cs fails (c# projekta gadījumā), kurā ir izstrādāta attiecīgi veidojamā objekta sagatave. Piemēram, ja tā ir procedūra, tad tiek izveidota jauna funkcija ar nosaukumu ‘StoredProcedure1’, bez ieejas parametriem, kas neko nedara. Programmētāja uzdevums ir nosaukt to kā vajag un programmēt tās darbību.

Kad ir realizēta nepieciešamā funkcionalitāte- tad projektu nepieciešams uzstādīt uz SQL Server. Arī šī daļa ir visai vienkārša- jāspiež labā poga uz projekta galvenā faila (Attēls 13 Projekta uzstādīšana uz SQL Server) un jāspiež Deploy. Pēc veiksmīgas kompilācijas un uzstādīšanas norādīto procedūru (vai citu objektu) var sākt lietot no SQL Server puses.

Projekta uzstādīšana uz SQL Server


Lai pārliecinātos, ka dll fails ir veiksmīgi uzstādīts, visvienkāršāk ir izmantot Management Studio. Datu bāzē, uz kuru veidojot projektu tika veidota konekcija sadaļā programmability->Assemblies jābūt jaunai bibliotēkai.

Izveidotā bibliotēka


Veidojot šo aprakstu, izveidoju procedūru „nekoNedaraProcedura”, kas veic tieši tādu uzdevumu kā aprakstīts- nedara neko. Pēc projekta uzstādīšanas uz SQL Server tā kļūst pieejama tāpat kā jebkura cita procedūra, kas veidota uz servera (Attēlā zemāk). Šeit arī redzama viena Management Studio ērta iespēja- atfiltrētas tikai tās procedūras, kas savā nosaukumā satur vārdu „neko”.

Izveidotā procedūra


No šī brīža procedūru var izsaukt izmantojot T-SQL sintaksi- tāpat, kā jebkuru citu procedūru. Attēlā zemāk ir redzams procedūras izsaukums un arī tā izpildes rezultāts- tā ir izpildījusies veiksmīgi.

Procedūras izsaukums


UZMANĪBU- SQL Serveris pēc noklusējuma neļauj strādāt ar .NET bibliotēkām, lai iespējotu šo funkcionalitāti, jāizpilda sekojoša komanda:
sp_configure 'clr enabled', 1
GO
RECONFIGURE
To pašu var izdarīt ar Surface Are Configuration rīku!

Nav komentāru:

Komentāra publicēšana