2015 m. gruodžio 16 d., trečiadienis

Bilietai i build stuff

https://www.eventbrite.com/e/software-development-conference-build-stuff-2016-lithuania-tickets-19886732753

http://www.infoq.com - sudeti irasai is 2015 m konferencijos

LINQ transactions

odb.Connection.Open()
            odb.Transaction = odb.Connection.BeginTransaction()
            Try
  odb.procedureA(1)
                odb.procedureB(2)
                odb.procedureC(3)
                odb.procedureD(4)
                  
                odb.Transaction.Commit()
            Catch ex As Exception
                WebEmail.SendExceptionEmail("dsk@abc.lt", "CRC deadlock", Server.GetLastError)
                odb.Transaction.Rollback()
                ScriptManager.RegisterStartupScript(Me, Me.GetType, "CloseD", "alert('An error occurred. Please do not close window and try again after 5 minutes!');", True)
            Finally
                odb.Connection.Close()
            End Try




Su odb.SubmitChanges - tinka tik mazom operacijom
Kai distributed užklausos, geriau dirbti su transactionScope

2015 m. gruodžio 3 d., ketvirtadienis

MS SQL: LIKE

Problema:


Neveikia LIKE '%Dovilė%'






Sprendimas:


Reikia nurodyti, kad naudosime unicode LIKE N'%Dovilė%'


Tas pats su = ir <>





2015 m. rugpjūčio 19 d., trečiadienis

70-487: MVA (Microsoft Virtual Academy) - Designing applications by Windows Azure



Designing applications by Windows Azure

https://www.microsoftvirtualacademy.com/en-US/training-courses/designing-applications-for-windows-azure-jump-start-8285

Mindshift - debesys turėtų pakeisti programų priežiūrą, nes viskuo rūpinsis Microsoft. Naudotojas tik informuos apie klaidas.

FailSafe core - išskirstome darbus ir išsirenkame tinkamiausias technologijas (?)






















2015 m. rugpjūčio 11 d., antradienis

70-487: Windows Azure learning video

http://www.microsoftvirtualacademy.com/training-courses/developing-windows-azure-and-web-services-jump-start

Azure - progamiškai hostinamas, turintis konfigūracijos failus, turi service bus, jungimo scenarijus.





3. Azure Storage and SQL Database

 



Toje nuorodoje bus daugiau informacijos apie blob.









 




Block Blobs - labiau tinkamas video, zip failams, kur užima daug vietos.
Page Blobs -  specialiai informacijai.



Toliau matome pvz., kaip sukurti projekta ir uploadinti paveikslelius i debesi.


Lentelės - objektų kolekcijos. Negalvoti kaip apie reliacinę duomenų bazę, kad galime sukurti join. Tai tiesiog lentelės su daug eilučių.






Partition key - labai svarbu suprasti!!!




Windows Azure esme - dirbame su projektu lokalioje masinoje, o duomenis laikome debesyje.



4. Data Access Technologies

ADO.NET turi:
  • duomenų bazę, lenteles, prisijungimą (SqlConnection)
  • connection reikia atidaryti (SqlCommand)
  • su DataReader cursoriu einame per eilutes (SqlDataReader)

Atimintyje galima sukurti DataTable objektą, DataAdapter. Su DataAdapteriu valdome duomenis DataTable - siunčia užklausas į duomenų bazę ir siunčia duomenis į DataTable.

 Jei reikia kelių DataTable - naudojam DataSet!!

 

  










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.



2015 m. gegužės 4 d., pirmadienis

2015 m. balandžio 25 d., šeštadienis

2015 m. balandžio 10 d., penktadienis