piektdiena, 2010. gada 17. septembris

SQL Server programmēšana

.NET integrācija ļauj programmētājiem veidot jaudīgas lietotāja definētas procedūras, trigerus, lietotāja definētas funkcijas, agregātfunkcijas un tipus SQL Server iekšienē, izmantot to .NET valodu, kura ir izstrādātājam vairāk pazīstama (šobrīd gan var izmantot C#, VB un C++).

Jau SQL Server 7.0 piedāvāja servera funkciju paplašināšanu, izmantojot paplašinātās procedūras (extended stored procedures), kas patiesībā ir bibliotēkas, kuras parasti tika rakstītas izmantojot C++. Šīs funkcijas ir grūti atkļūdot, tāpat arī citas problēmas padarija tās visai nepievilcīgas- piemēram, drošības problēmas un atmiņas apgabalu piesārņošana nekorektas programmēšanas dēļ (memory leaks).
.NET programmas tiek izpildītas ar .NET izpildes vides palīdzību CLR (Common Language Runtime). CLR ir vide, kas nodrošina izpildi programmām, kas veidotas izmantojot kādu no .NET valodām. Programmas, kas rakstītas kādā no .NET valodām, tādām kā C#, VB, Phyton u.c., tiek kompilētas uz starpvalodu IL (Intermediate Language). Līdz ar to .NET kompilatori izveido izpildes failus exe vai dll šajā IL pseido kodā, kas ļoti līdzīgs mašīnkodiem, taču nav. Savukārt CLR izpildot programmu interpretē IL kodu, pārtaisot to uz konkrētā procesora mašīnkodiem. CLR gan nav īsts interpretators, kas vienmēr interpretē kodu, jo tas programmai izpildoties katru koda rindiņu interpretē vienreiz, otrreiz izpildot kodu izmanto iepriekš izveidotos mašīnkodus. Līdz ar to var teikt, ka CLR ir hibrīds starp interpretatoru un kompilatoru. CLR nodrošina arī automātisko atmiņas pārvaldību un koda drošības direktīvas, kuras vēl nav kļuvušas populāras, taču tām paredzama liela nākotne. Izmantojot koda drošības iespējas, lietotājs var piešķirt vai atņemt kodiem tiesības uz datora resursiem.

CLR padara iespējamu risināt problēmas un realizēt sarežģītas datu manipulācijas SQL Server iekšienē, kas normāli prasītu pilnīgi atsevišķu programmu. Noteiktās situācijās (piemēram, ja jāveic darbības ar teksta laukiem, smagām matemātiskām operācijām, šifrēšanu u.c.) CLR strādā ātrāk nekā T-SQL rakstīts analogs. Dažkārt lietas, kuras nav iespējamas vai ir ļoti grūti realizējamas izmantojot T-SQL, ir viegli veicamas, izmantojot CLR. Jāņem vērā, ka CLR darbība uz SQL Server ne tikai paver daudzas iespējas veidot sarežģītu funkcionalitāti, bet tas arī ir potenciāls risks un drošības caurums, ja netiek veikti pareizi administrēšanas darbi. Ir ļoti maz ierobežojumu uzdevumiem, ko var veikt nedroša (unsafe) bibliotēka. Šī iemesla dēļ, CLR pēc noklusēšanas nav atļauts izpildīt uz SQL Server 2005.

Nav komentāru:

Komentāra publicēšana