Rodomi pranešimai su žymėmis CLR. Rodyti visus pranešimus
Rodomi pranešimai su žymėmis CLR. Rodyti visus pranešimus

2013 m. vasario 10 d., sekmadienis

Managed Databases Objects, aggregates and user-defined types


Managed Databases Objects


Namespace->Classes->Methods

CREATE PROCEDURE Person.UpdatePhoneList AS
EXTERNAL NAME Contacts.SaveList – nuoroda į assembly

Duomenų bazės objektą atnaujiname normaliai:

EXEC Person.updatePhoneList

Managed aggregates and user-defined types


CREATE AGGREGATE Concatenate (@input nvarchar(4000))
RETURNS nvarchar(4000)
EXTERNAL NAME Utilities.[Utilities.Concatenate]

Duomenų bazės objektas naudojamas normaliai:

SELECT AccountNumber, dbo.Concatenate(SalesOrderNumber) Orders
FROM Sales.SalesOrderHeader
GROUP BY AccountNumber

Su CLR aggregatais galima sukurti sudėtingus skaičiavimus (ne tik SQL galimus MAX, SUM, AVG) ir duomenų tipus.

Su CLR tipais galima saugotiir valdyti sudėtingus kintamuosius ir spatial data.

Implementing Managed Code in database



CLR (Common Language Runtime) – sluoksnis .NET Frameworke, kuris leidžia kurti programas ir procedūras bet kuria .NET kalba ir tai vykdyti.

SQL CLR Integration leidžia sukurti duomenų bazės objektus, kurie pagerina funkcionalumą.

Managed Code vs. Transact-SQL (9-9)


Darbas su eilutėmis CLR yra greitesnis nei T-SQL.


Transact SQL:
  • Efektyvus priėjimas prie duomenų
  • Nedidelė logika
  • Gali vykdyti tik su SQL Server aplinka
  • Gali išplėsti stored procedūras

Managed code:
  • Sudėtingi skaičiavimai
  • Sudėtinga procedūrinė logika
  • Vykdo su SQL serverio arba kliento procesu
  • Palaiko aukštesnį sistemos integralumą, negu išplėstos stored procedūros

Assembly:
  • sukompiliuotas kodas, kuris palaiko tipus, metodus ir meta duomenis;
  • vienas, naudojamas įdiegimui ir kodo naudojimui;
  • Vykdomas per SQLCLR.


Assembly – tai DLL failai, kurie sukuriami kompiliuojant .NET kalbos, tokios kaip VB arba C# failus, palaikančius logiką.

Assembly trust levels:
  • Machine policies
  • User policies
  • Host policies

Permissions:
  • SAFE
  • EXTERNAL_ACCESS
  • UNSAFE

Trust lygiai gali būti priskirti Windows accountams.
Trust lygiai kontroliuoja priėjimą per assembly prie išorinių resursų.

CREATE ASSEMBLY assembly_name
[AUTHORIZATION owner_name]
FROM {}
[WITH PERMISSION SET = {SAFE | EXTERNAL_ACCESS | UNSAFE}]
[;]


TRUSTWORTHY – duomenų bazių savybė, rodanti, kad galima pasitikėti išoriniais šaltiniais. Dažnai naudojama su EXTERNAL_ACCESS.