.NET v SQL ServeruNDBI039Jan Drozenhttp://www.ms.mff.cuni.cz/~drozenj
Než začneme• příklady budou triviální• kódy ke stažení (CLR SQL):
Platforma .NET•   poprvé v roce 2002 v1.0•   jednotná softwarová platforma pro PC/web/mobilní zařízení•   managed (garbage...
Motivace                 Klient      Server                 ADO.NETCLRCTS, strong-                 DB ENGINEtyping,       ...
CLR integrace     Klient                       Server                                     .NET assembly                   ...
Výhody integrace CLR•   SQL Server 2005: nahrazení Extended stored procedures (C/C++)•   větší výrazová síla•   možnost vo...
Použití CLR SQL•   typicky pro složitější výpočty•   možnost multi-thread zpracování•   objektový přístup•   možnost připo...
Pod pokličkou SQL Server                        CLR  threading,scheduling             APP domain  memory management      m...
CLR SQL objekty• na CLR můžeme provozovat: ▫   stored-procedures ▫   scalar-valued functions ▫   table-valued functions ▫ ...
CLR .NET objekty• objektová reprezentace: ▫   stored-procedures <- public static method ▫   scalar-valued functions <- pub...
Co je třeba - I• SQL Server >= 2005• povolené použití CLR:            EXEC sp_configure clr enabled , 1            GO     ...
Co je třeba - II                                                                        <2012 implicitně• vytvořit assembl...
Co je třeba - III• kvůli bezpečnosti mají assembly definovanou úroveň• standardně  ▫ SAFE• pokud přistupují k externím zdr...
Co je třeba - IV• nahrát assembly na server ▫ VS provádí automaticky ▫ klikacím způsobem přes SQL MS ▫ TSQL:    CREATE AS...
Co je potřeba - V• definovat procedury, fce, atd. z assembly ▫ pokud nahráváme přes VS, tak nemusíme ▫ jinak TSQL:    CRE...
DEMOStored procedure
Připojení• používáme instanci SqlConnection  ▫ klasické ADO.NET  ▫ ctor public SqlConnection(string connectionString)  ▫ p...
regular    contextRegular vs. context connection                • omezení                  ▫ context                     ...
stored procedures• jsou statické• atribut Microsoft.SqlServer.Server.SqlProcedure• návratová hodnota void
DEMOuser defined function (scalar)
user defined functions (scalar)• jsou statické• atribut SqlFunction(DataAccess = DataAccessKind.Read)• návratová hodnota ....
DEMOuser defined function (table valued)
user defined functions (table valued)• jsou statické• atribut  SqlFunction(         DataAccess = DataAccessKind.Read,     ...
DEMOuser-defined aggregate
user defined aggregates                                                  řádky      hodnota• provádí výpočet nad množinou ...
DEMOuser-defined type
user defined types• atribut SqlUserDefinedType ▫ volitelně Serializable• musí implementovat INullable• musí implementovat ...
Debuging• dá se povolit z VS• možnost i z MS• při krokování postupuje přes příkazy  posílané na server (dynamic SQL)• nepo...
Shrnutí• SQL server umožňuje implementovat v rámci procedur, UDF, atd.  takřka cokoli ▫ můžeme část aplikační logiky převé...
LINQ
LINQ•   Language INtegrated Query•   dotazovací jazyk•   C# 3.0, VB9, .NET 3.5•   zkrácení enumerace•   varianty podle cíl...
LINQ to SQL• odstíní programátora .NET od SQL• není potřeba SqlCommand, apod.• mapuje objekty na entity RD ▫ metody na fun...
DEMOLINQ to SQL
Zdroje• MSDN documentation• SQL Server books online• Programming Microsoft SQL Server 2012     Lobel, Leonard G.     Brust...
KONEC
Upcoming SlideShare
Loading in …5
×

.NET v SQL Serveru

470
-1

Published on

Přehled použití integrace .NET CLR v SQL Serveru

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
470
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

.NET v SQL Serveru

  1. 1. .NET v SQL ServeruNDBI039Jan Drozenhttp://www.ms.mff.cuni.cz/~drozenj
  2. 2. Než začneme• příklady budou triviální• kódy ke stažení (CLR SQL):
  3. 3. Platforma .NET• poprvé v roce 2002 v1.0• jednotná softwarová platforma pro PC/web/mobilní zařízení• managed (garbage collected) prostředí• CLR – Common Language Runtime• jazyky podle CLS ▫ C#, VB.NET, J#, F#,…• přednášky ▫ Jazyk C# a platforma .NET ▫ Pokročilé programování pro platformu .NET I, II
  4. 4. Motivace Klient Server ADO.NETCLRCTS, strong- DB ENGINEtyping, computingexceptionhandling, etc… ADO.NET
  5. 5. CLR integrace Klient Server .NET assembly „JIT“ CLR generic client DB ENGINE CTS, strong- typing, exception handling, etc…
  6. 6. Výhody integrace CLR• SQL Server 2005: nahrazení Extended stored procedures (C/C++)• větší výrazová síla• možnost volby TSQL/.NET• možnost volby jazyka .NET• ušetřený traffic• využívá se kapacita serveru
  7. 7. Použití CLR SQL• typicky pro složitější výpočty• možnost multi-thread zpracování• objektový přístup• možnost připojení k další DB• pomalejší při použití, které je přirozené pro TSQL
  8. 8. Pod pokličkou SQL Server CLR threading,scheduling APP domain memory management mapping managed threads synchronization memory allocation, GC low level calls
  9. 9. CLR SQL objekty• na CLR můžeme provozovat: ▫ stored-procedures ▫ scalar-valued functions ▫ table-valued functions ▫ aggregate functions ▫ user-defined types ▫ triggers
  10. 10. CLR .NET objekty• objektová reprezentace: ▫ stored-procedures <- public static method ▫ scalar-valued functions <- public static method ▫ table-valued functions <- public static method ▫ aggregate functions <- class, structure ▫ user-defined types <- class, structure ▫ triggers <- public static method
  11. 11. Co je třeba - I• SQL Server >= 2005• povolené použití CLR: EXEC sp_configure clr enabled , 1 GO RECONFIGURE GO
  12. 12. Co je třeba - II <2012 implicitně• vytvořit assembly podle dobře formátovaného kódu nejspíš 2.0• cílové platformy .NET frameworku: SQL Server .NET Framework SQL Server 2005 2.0 Dobrman: SQL Server 2008 express 2.0 SP2 SQL Server 2008, WS 2003 (64b), IA-64 2.0 SP2 SQL Server 2008 (zbytek) 3.5 SP1 SQL Server 2012 4.0• možnost zjistit z: sys.dm_clr_properties ▫ další: sys.dm_clr_appdomains, sys.dm_clr_loaded_assemblies,sys.dm_clr_tasks
  13. 13. Co je třeba - III• kvůli bezpečnosti mají assembly definovanou úroveň• standardně ▫ SAFE• pokud přistupují k externím zdrojům nebo unmanaged kódu, jsou označeny jako ▫ EXTERNAL_ACCESS  přístup k systémovým zdrojům, jako např. soubory, síť, proměnné prostředí, registry ▫ UNSAFE  přístup ke zdrojům i mimo server, volání nativního kódu• pro takové assembly musí být v databázi povolení: ▫ ALTER DATABASE [dbname] SET TRUSTWORTHY ON• nebo ▫ assembly podepsat ▫ mít autorizovaný login
  14. 14. Co je třeba - IV• nahrát assembly na server ▫ VS provádí automaticky ▫ klikacím způsobem přes SQL MS ▫ TSQL:  CREATE ASSEMBLY [jméno] FROM [cesta] WITH PERMISSION_SET [povolení]
  15. 15. Co je potřeba - V• definovat procedury, fce, atd. z assembly ▫ pokud nahráváme přes VS, tak nemusíme ▫ jinak TSQL:  CREATE PROCEDURE [jméno] (@arg1 typ1,…) AS EXTERNAL NAME [assembly.object]
  16. 16. DEMOStored procedure
  17. 17. Připojení• používáme instanci SqlConnection ▫ klasické ADO.NET ▫ ctor public SqlConnection(string connectionString) ▫ použití unmanaged zdrojů, implementuje IDisposable  proto použítí using bloku• connection string? ▫ buď úplný (regular connection)  DATA SOURCE=[server];INITIAL CATALOG=[db] ;USER ID=[uname];PASSWORD=[passwd]  DATA SOURCE=[server];INITIAL CATALOG=[db] ;INTEGRATED SECURITY=SSPI  DATA SOURCE=[server];INITIAL CATALOG=[db] ;TRUSTED_CONNECTION=TRUE ▫ nebo použití stávajícího připojení (context connection)  CONTEXT CONNECTION=TRUE
  18. 18. regular contextRegular vs. context connection • omezení ▫ context  nemůžeme použít SqlBulkCopy  žádné další upřesnění connection stringu  DataSource vrací null  a další ▫ regular  nepodporuje asynchronní zpracování vzhledem k internímu serveru
  19. 19. stored procedures• jsou statické• atribut Microsoft.SqlServer.Server.SqlProcedure• návratová hodnota void
  20. 20. DEMOuser defined function (scalar)
  21. 21. user defined functions (scalar)• jsou statické• atribut SqlFunction(DataAccess = DataAccessKind.Read)• návratová hodnota .NET typu odpovídající nějakému SQL typu
  22. 22. DEMOuser defined function (table valued)
  23. 23. user defined functions (table valued)• jsou statické• atribut SqlFunction( DataAccess = DataAccessKind.Read, FillRowMethodName = “method", TableDefinition=“table_def")• návratová hodnota .NET typu implementujícího IEnumerable• potřeba mít statickou metodu methodName(Object obj, out col1, out col2,…)• TSQL definice: ▫ CREATE FUNCTION [name] (@arg1,@arg2,…) RETURN TABLE (argg1,argg2,…) AS EXTERNAL…• nemůže vracet ne-unicode varchar a timestamp
  24. 24. DEMOuser-defined aggregate
  25. 25. user defined aggregates řádky hodnota• provádí výpočet nad množinou řádků a vrací jednu hodnotu• atribut SqlUserDefinedAggregate• 4 metody (instanční): ▫ public void Init ▫ public void Accumulate ▫ public void Merge ▫ public type Terminate• TSQL definice: ▫ CREATE AGGREGATE [name] (@input [type]) RETURNS [type] EXTERNAL NAME…
  26. 26. DEMOuser-defined type
  27. 27. user defined types• atribut SqlUserDefinedType ▫ volitelně Serializable• musí implementovat INullable• musí implementovat public metody Parse a ToString• musí implementovat IXmlSerializable ▫ nebo všechny public položky musí být XmlSerializable ▫ nebo musí být označeny XmlIgnore parametrem• jména public položek kratší než 128 znaků a musí odpovídat konvencím SQL serveru• statické položky musí být konstanty nebo read-only
  28. 28. Debuging• dá se povolit z VS• možnost i z MS• při krokování postupuje přes příkazy posílané na server (dynamic SQL)• nepodporuje SQL Server Express 
  29. 29. Shrnutí• SQL server umožňuje implementovat v rámci procedur, UDF, atd. takřka cokoli ▫ můžeme část aplikační logiky převést na server• může ale nemusí být rychlejší• managed prostředí ▫ zdroje mapované na zdroje SQL serveru• regular vs. context connection
  30. 30. LINQ
  31. 31. LINQ• Language INtegrated Query• dotazovací jazyk• C# 3.0, VB9, .NET 3.5• zkrácení enumerace• varianty podle cíle dotazu ▫ LINQ to  objects  SQL  XML  …• implementace pomocí extension metod
  32. 32. LINQ to SQL• odstíní programátora .NET od SQL• není potřeba SqlCommand, apod.• mapuje objekty na entity RD ▫ metody na funkce a procedury• potřeba mít podpůrné datové struktury ▫ O/R Designer (VS) ▫ atributy Table, Column• více se používá entity-framework ▫ LINQ to entities
  33. 33. DEMOLINQ to SQL
  34. 34. Zdroje• MSDN documentation• SQL Server books online• Programming Microsoft SQL Server 2012 Lobel, Leonard G. Brust, Andrew J. TALLAN,2012
  35. 35. KONEC

×