Sql server clr integration

  • 515 views
Uploaded on

Sql server clr integration by Oleksiy Davidich

Sql server clr integration by Oleksiy Davidich

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
515
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • Языки программирования .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

Transcript

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