sql server clr integration

Post on 28-Dec-2014

530 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Sql server clr integration by Oleksiy Davidich

TRANSCRIPT

SQL Server CLR Integration

Как подружить C# и T-SQL

Software EngineerM. C. Dean

Алексей Давидич

Обзор

Необходимость появления SQL CLR

Сравнение T-SQL и C#Вопросы производительностьВозможности SQL CLR

А что не так?

T-SQL не является оптимальным языком программирования для ряда задач

Удобство

Улучшенная парадигма программирования

Упрощённая разработка

Скорость

Возможность получить более производительные и гибкие решения

Безопасность

Механизм Code Access Security (CAS)

Выбор между C# и T-SQL

T-SQL Прямой доступ к

данным Большие объёмы

данных Отсутствие

сложной логики

C# Сложные

вычисления Работа со

строками Ветвистая логика Работа с RegEx Шифрование Прямой доступ к

файловой системе

Давайте заглянем под капот

Реализация SQL CLR интеграции

CLR HOST

SQL Query

Execution Plan

Compiler

JIT

MSIL

Native BRIDGE

Список возможных объектов

CLR User-Defined Functions CLR Scalar-Valued Functions CLR Table-Valued Functions CLR User-Defined Aggregates

CLR User-Defined TypesCLR Stored ProceduresCLR Triggers

Активизация CLR Integration

sp_configure 'show advanced options', 1;GO

RECONFIGURE;GO

sp_configure 'clr enabled', 1;GO

RECONFIGURE;GO

Hello world DEMO

Deployment

Компиляция csc /target:library [name].cs

Загрузка сборки на серверCREATE ASSEMBLY myAssemblyFROM 'c:\[name].dll' WITH PERMISSION_SET = SAFE

Создание хранимой процедурыCREATE PROCEDURE hello @i nchar(25) OUTPUT AS EXTERNAL NAME myAssembly.MyNamespace.myStoreProc

Permission levels

SQL запрос

Query Processor

SQL CLR Module(Store procedure, UDFs, UDTs, UDAs, Triggers)

SQL Server

Результат

CLR Hosting Module (.Net Framework)

SQL Server Database Engine

Database

SAFEFiles,

Registry, Network

Native DLLs, COM DLLs

EXTERNAL _ACCESS UNSAFE

Сравнение производительности

DEMO: Сравнение производительности

T-SQL vs C# for Splitting Strings

!!! 227 раз быстрее !!!

T-SQL vs C# for Splitting Strings

DEMO: Table-Valued Function

Streaming Table-Valued Functions

Новый механизм, на порядок превосходящий раннюю реализацию в extended store procedure.

Возвращает IEnumerable, подключаемый напрямую к плану запроса

Уменьшаем время доступаСнижает накладные издержки

расхода памяти

Особенности UDF

TVP (in & out) не применимы при использования контекстного соединения

Update, Insert & Delete запрещены

CLR TVF не поддерживают constraints и индексы уникальности

CLR TVF не могут вернуть таблицу с колонками типа Timestamp или non-unicode текст

DEMO: User Defined Aggregate

Context connection

Context vs regular connection

DEMO: Stored Procedure (part 1)

In-Process расширения ADO.NET

SqlContext – предоставляет доступ к другим расширениям, а также некоторую информацию о контексте исполнения SqlPipe  - для возврата табличных данных и

сообщений клиенту SqlTriggerContext  - представляет информацию

о контексте в котором срабатывает триггерSqlDataRecord - для возврата

динамически конфигурируемых наборов данных из хранимой процедуры

DEMO: Stored Procedure (part 2)

DEMO: User Defined Type & Trigger

DEMO: Moving BL to SQL Server

Timesheet review

Спасибо!

top related