Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sql server clr integration

1,067 views

Published on

Sql server clr integration by Oleksiy Davidich

  • Be the first to comment

Sql server clr integration

  1. 1. Как подружить C# и T-SQL Алексей Давидич Software Engineer M. C. Dean
  2. 2.  Необходимость появления SQL CLR Сравнение T-SQL и C# Вопросы производительность Возможности SQL CLR
  3. 3.  T-SQL не является оптимальным языком программирования для ряда задач
  4. 4.  Улучшенная парадигма программирования Упрощённая разработка
  5. 5.  Возможность получить более производительные и гибкие решения
  6. 6.  Механизм Code Access Security (CAS)
  7. 7. C# T-SQL Сложные вычисления  Прямой доступ к Работа со строками данным Ветвистая логика  Большие объёмы Работа с RegEx данных Шифрование  Отсутствие сложной Прямой доступ к логики файловой системе …
  8. 8. SQL Query Compiler MSIL JIT NativeExecution Plan CLR HOST BRIDGE
  9. 9.  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
  10. 10. sp_configure show advanced options, 1;GORECONFIGURE;GOsp_configure clr enabled, 1;GORECONFIGURE;GO
  11. 11.  Компиляция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
  12. 12. 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
  13. 13. !!! 227 раз быстрее !!!
  14. 14.  Новый механизм, на порядок превосходящий раннюю реализацию в extended store procedure. Возвращает IEnumerable, подключаемый напрямую к плану запроса Уменьшаем время доступа Снижает накладные издержки расхода памяти
  15. 15.  TVP (in & out) не применимы при использования контекстного соединения Update, Insert & Delete запрещены CLR TVF не поддерживают constraints и индексы уникальности CLR TVF не могут вернуть таблицу с колонками типа Timestamp или non- unicode текст
  16. 16.  SqlContext – предоставляет доступ к другим расширениям, а также некоторую информацию о контексте исполнения  SqlPipe - для возврата табличных данных и сообщений клиенту  SqlTriggerContext - представляет информацию о контексте в котором срабатывает триггер SqlDataRecord - для возврата динамически конфигурируемых наборов данных из хранимой процедуры
  17. 17.  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
  18. 18. Спасибо!

×