Sql server clr integration
Upcoming SlideShare
Loading in...5
×
 

Sql server clr integration

on

  • 872 views

Sql server clr integration by Oleksiy Davidich

Sql server clr integration by Oleksiy Davidich

Statistics

Views

Total Views
872
Views on SlideShare
872
Embed Views
0

Actions

Likes
1
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Языки программирования .Net Framework во многих отношениях богаче языка T-Sql, предоставляя разработчику конструкции и возможности, прежде не доступные SQL Server разработчикам.Все средства, которые мы привыкли использовать для разработки и отладки средне-уровневых (middle-tier) или клиентских приложений.
  • Во многих случаях, используя языки .NetFramework можно достигнуть лучшей производительности, чем при использовании T-SQL
  • Ядро базы данных запускает CLR среду в которой в дальнейшем исполняется управляемый код. А как известно, управляемый код использует механизм Code Access Security (CAS) для предотвращения выполнения потенциально опасного кода внутри сборок. И это даёт безопасную альтернативу расширенным хранимым процедурам (extended stored procedures) доступных в ранних версиях SQL Server.
  • Методология: постановка задачи -> реализация на T-SQL и C# -> выполнение выборки данных с использованием различных реализаций
  • Out param
  • messages , tabular results, dynamic
  • Может быть структрурой/классом и должен:реализовывать INullableиметь методы Parse и ToStringиметь конструктор без параметровне иметь перегруженных методов (кроме ctor)static члены либо read-only, либо константыбыть сериализируем или реализовывать IXmlSerializable
  • Сказать о баге с NULL RETURN_VALUE

Sql server clr integration Sql server clr integration Presentation Transcript

  • Как подружить C# и T-SQL Алексей Давидич Software Engineer M. C. Dean
  •  Необходимость появления SQL CLR Сравнение T-SQL и C# Вопросы производительность Возможности SQL CLR
  •  T-SQL не является оптимальным языком программирования для ряда задач
  •  Улучшенная парадигма программирования Упрощённая разработка
  •  Возможность получить более производительные и гибкие решения
  •  Механизм Code Access Security (CAS)
  • C# T-SQL Сложные вычисления  Прямой доступ к Работа со строками данным Ветвистая логика  Большие объёмы Работа с RegEx данных Шифрование  Отсутствие сложной Прямой доступ к логики файловой системе …
  • SQL Query Compiler MSIL JIT NativeExecution Plan CLR HOST BRIDGE
  •  CLR User-Defined Functions  CLR Scalar-Valued Functions  CLR Table-Valued Functions  CLR User-Defined Aggregates CLR User-Defined Types CLR Stored Procedures CLR Triggers
  • sp_configure show advanced options, 1;GORECONFIGURE;GOsp_configure clr enabled, 1;GORECONFIGURE;GO
  •  Компиляцияcsc /target:library [name].cs Загрузка сборки на серверCREATE ASSEMBLY myAssemblyFROM c:[name].dllWITH PERMISSION_SET = SAFE Создание хранимой процедурыCREATE PROCEDURE hello@i nchar(25) OUTPUTAS EXTERNAL NAME myAssembly.MyNamespace.myStoreProc
  • SQL запрос РезультатSQL Server Query Processor SQL CLR Module (Store procedure, UDFs, UDTs, UDAs, Triggers) CLR Hosting Module (.Net Framework)SQL Server Database EXTERNAL Engine _ACCESS UNSAFE SAFE Files, Native DLLs, Registry, COM DLLs Database Network
  • !!! 227 раз быстрее !!!
  •  Новый механизм, на порядок превосходящий раннюю реализацию в extended store procedure. Возвращает IEnumerable, подключаемый напрямую к плану запроса Уменьшаем время доступа Снижает накладные издержки расхода памяти
  •  TVP (in & out) не применимы при использования контекстного соединения Update, Insert & Delete запрещены CLR TVF не поддерживают constraints и индексы уникальности CLR TVF не могут вернуть таблицу с колонками типа Timestamp или non- unicode текст
  •  SqlContext – предоставляет доступ к другим расширениям, а также некоторую информацию о контексте исполнения  SqlPipe - для возврата табличных данных и сообщений клиенту  SqlTriggerContext - представляет информацию о контексте в котором срабатывает триггер SqlDataRecord - для возврата динамически конфигурируемых наборов данных из хранимой процедуры
  •  MSDN: http://msdn.microsoft.com/en- us/library/ms131102(SQL.100).aspx Cookbook (O’REILLY) : http://msdn.microsoft.com/en- us/library/orm-9780596101404-02-12.aspx MSDN Blog (Exception handling): http://blogs.msdn.com/b/sqlclr/archive/2006/ 06/29/651649.aspx
  • Спасибо!