2015 m. liepos 17 d., penktadienis

MS SQL View

VIEW kūrimas


Negali turėti daugiau kaip 1024 stulpelių

Negali naudoti COMPUTE, COMPUTE BY, INTO

Negali naudoti ORDER BY be TOP

Sys.views – sąrašas viewų duomenų bazėje

Sp_helptext – apibrėžia non-encrypted view

Sys.sql_dependencies – objektai (tame tarpe ir view), kurie priklauso kitiems

objektams

Duomenų keitimas view’e


Atnaujinat view, duomenys pasikeičia ir pagrindinėje lentelėje

Negalima keisti stulpelių, kurie sudaryti naudojant GROUP BY, HAVING,

DISTINCT

Indexed view


Indeksuotiems view’ams palaikyti reikia daugiau resursų, nei paprastiems indeksams.

Indeksuoti view’ai ir partitioned view gali pagerinti veikimą.

Norint indeksuoti view’ą, būtina naudoti SCHEMA_BINDING

Pirmasis indeksas view’w turi būti unikalus.

Indeksuoti viewai geriausiai veikia, kai būna retai atnaujinami duomenys lentelėse. Jei

duomenys bus labai dažnai atnaujinami, indeksuotą view’ą palaikyti gali tapti per

daug brangu.

Partitioned view


Į partitioned view galima sujungti horizontaliai padalintus duomenis iš vieno ar kelių

serverių.

Partitioned view neturi būti maišomi su indeksuotais viewais, sukurtais partitioned

schemoje.

Stored procedures


Stored procedūra –metodas, kuris inkapsuliuoja dažnai pasikartojančias užduotis. Jos

palaiko apibrėžtus kintamuosius, sąlyginius vykdymus.

Stored procedūrų kūrimas panašus į view kūrimą – pirma sukuriam norimą užklausą,

o po to – įdedame ją į procedūrą.

Jeigu procedūra sukurta naudojant WITH ENCRYPTION, tą pačią sintaksę naudoti

reikia ir atnaujinat procedūrą.

Parameterized stored procedures


Gali turėti trijų rūšių komponentus:

Input parameters,

Output parameters,

Return values.

Execution plans


Execution planai parodo, kaip naudojamos lentelės, view’ai, indeksai vykdant

užklausas.

Execution planai turi du pagrindinius komponentus:

- Query Plan

- Execution Context (specifiniai parametrai, pagal kuriuos vykdo užklausas. Šie

parametrai skirtigi kiekvienam naudotojui – nes norima skirtingų duomenų)

Execution planai nėra parodomi encrypted stored procedures ir trigeriams.

Užklausos kompiliavimas, kai nėra kešuojami execution planai:

Parsing-> algebrized Tree -> Compilation -> Optimization

Stored procedūras galima rekompiliuoti:

- Sp_recompile

- WITH RECOMPILE on execution

- WITH RECOMPILE at creation

Handling Exceptions


Struktūrinis klaidų gaudymas bendras daugelyje programavimo kalbų, tokių kaip

Microsoft Visual Basic, Visual C#. Transact-SQL dažnai naudojamas klaidų

gaudymas su TRY… CATCH.

101 LINQ examples

https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b

Kaip pagauti NULL values ADO.NET

Problema: kode niekaip negalėjau apdoroti klaidos, kai gaunama null, nes lentelėje pagal nutylėjimą pagaudavo klaidą:

The value for column 'PersonalCode' in table 'Employee' is DBNull.




Sprendimas: savybę NullValue pakeisti į 'Nothing' (buvo 'Throw exception')




Paveikėlyje matome, kaip elgsis sistema, kai pagaus null reikšmė lauke PersonalCode.