Programowanie bazodanowe w.net. czyli SQL CLR w akcji



Podobne dokumenty
Cele. Definiowanie wyzwalaczy

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Struktura bazy danych

Część I Dostęp do danych oraz moŝliwości programowe (silnik bazy danych)

Bazy Danych i Usługi Sieciowe

Bazy danych i usługi sieciowe

Microsoft SQL Server Podstawy T-SQL

Oracle PL/SQL. Paweł Rajba.

Systemowe aspekty baz

SQL Server Łukasz Łysik 21 października 2008

Podstawy języka T-SQL : Microsoft SQL Server 2016 i Azure SQL Database / Itzik Ben-Gan. Warszawa, Spis treści

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Ćwiczenia 2 IBM DB2 Data Studio

Używany kiedy pełna treść instrukcji SQL jest nieznana przed uruchomieniem programu.

Systemowe aspekty baz danych

Zmiany techniczne wprowadzone w wersji Comarch ERP Altum

Oracle11g: Wprowadzenie do SQL

PODSTAWY BAZ DANYCH 13. PL/SQL

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Procedury i funkcje składowane

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

SQL 4 Structured Query Lenguage

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Hurtownia Świętego Mikołaja projekt bazy danych

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Sprawdzenie poziomu izolacji transakcji (w aktualnym połączeniu):

Procedury wyzwalane. (c) Instytut Informatyki Politechniki Poznańskiej 1

Microsoft SQL Server. Tradycyjna architektura klientserwer. Przeniesienie części logiki na serwer. Programowanie Transact SQL

PL/SQL. Zaawansowane tematy PL/SQL. Piotr Medoń

Paweł Rajba

Język PL/SQL. Rozdział 6. Procedury wyzwalane

SQL :: Data Definition Language

Zaawansowane bazy danych i hurtownie danych semestr I

Administracja i programowanie pod Microsoft SQL Server 2000

Przykład 3 Zdefiniuj w bazie danych hurtownia_nazwisko przykładową funkcję użytkownika fn_rok;

T-SQL dla każdego / Alison Balter. Gliwice, cop Spis treści. O autorce 11. Dedykacja 12. Podziękowania 12. Wstęp 15

Administracja i programowanie pod Microsoft SQL Server 2000

15. Funkcje i procedury składowane PL/SQL

Język SQL, zajęcia nr 1

Obsługa błędów w SQL i transakcje. Obsługa błędów w SQL

BAZA DANYCH SIECI HOTELI

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

KOLEKCJE - to typy masowe,zawierające pewną liczbę jednorodnych elementów

Procedury wyzwalane. Rozdział 13. Procedury wyzwalane. Cele stosowania procedur wyzwalanych. Definiowanie procedury wyzwalanej DML

Bazy danych 10. SQL Widoki

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Oracle PL/SQL. Paweł Rajba.

MeetingHelper. Aplikacja Android ułatwiająca przekazywanie materiałów pomiędzy uczestnikami spotkania. Instrukcja obsługi dla programisty

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

PL/SQL. Zaawansowane tematy PL/SQL


BAZY DANYCH Cz III. Transakcje, Triggery

Projektowanie systemów baz danych

Rozdział 17. Zarządzanie współbieżnością zadania dodatkowe

Aspekty aktywne baz danych

Polska Szkoła Weekendowa, Arklow, Co. Wicklow KWESTIONRIUSZ OSOBOWY DZIECKA CHILD RECORD FORM

1. Wyzwalacze BD (ang. triggers)

Wprowadzenie do kryptografii i bezpieczeństwa. Po raz czwarty

PHP: bazy danych, SQL, AJAX i JSON

Bezpieczenstwo aplikacji

Pakiety podprogramów Dynamiczny SQL

Jerzy Nawrocki, Wprowadzenie do informatyki

SQL> startup pfile=./admin/pfile/initdbx.ora. SQL> create spfile from pfile='$home/admin/pfile/initdbx.ora' create user bolek identified by bolek;

Comarch ERP XL Business Intelligence Start. Migracja do wersji 2018

Tuning SQL Server dla serwerów WWW

Transakcje inf. podstawowe

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

LAB 6 BEGIN TRANSACTION, COMMIT, ROLLBACK, SET TRANSACTION ISOLATION LEVEL,

Język T-SQL część III programowanie bazy danych

Plan wykładu BAZY DANYCH II WYKŁAD 3. Zasięg zmiennych. Zasięg zmiennych

T-SQL w Microsoft SQL Server 2014 i SQL Server 2012

Wykład 05 Bazy danych

Elementy. języka SQL

P o d s t a w y j ę z y k a S Q L

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Bartosz Jachnik - Kino

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wykład 5 funkcje i procedury pamiętane widoki (perspektywy) wyzwalacze

Składowane procedury i funkcje


Cheatsheet PL/SQL Andrzej Klusiewicz 1/9

Wykład IV Modelowanie danych, projektowanie systemu informatycznego Modelowanie konceptualne implementacyjne Modelowanie pojęciowe na encjach

How to share data from SQL database table to the OPC Server? Jak udostępnić dane z tabeli bazy SQL do serwera OPC? samouczek ANT.

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Systemy GIS Tworzenie zapytań w bazach danych

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Bazy danych. Bazy danych. Zapytania SELECT. Dr inż. Paweł Kasprowski.

Transkrypt:

Programowanie bazodanowe w.net czyli SQL CLR w akcji

CZYLI Lekka i bezstresowa sesja - będzie poświęcona programowaniu SQL server od strony.net i możliwościom, DALIŚCIE jakie SIĘ to podejście oferuje. Nie będzie żadnego LINQ ani Entity Framework. NABRAĆ Zaglądniemy do tematu od zupełnie innej, mało znanej strony. 2

Damian Widera d.widera@lgbs.pl @Damian.Widera http://sqlblog.com/blogs/damian_widera/default.aspx

5

Damian Widera http://channel9.msdn.com/series/konfiguracja-sql-2014-z-microsoft-azure

Damian Widera

http://1drv.ms/11dof7f Agenda Czym jest, a czym nie jest SQLCLR Co może zrobić SQLCLR, a nie potrafi TSQL Piszemy kod Tak NIE piszemy kodu. Bezpieczeństwo rozwiązania (krótko)

Ankieta 100 200 300 400 500

Tak zaczyna się ta historia. SQL Server 2005 Microsoft integruje.net runtime z silnikiem bazodanowym (v.2.0..) Runtime to CLR (Common Language Runtime) Integracja pozwala na uruchomienie kodu.net w kontekście zapytania

Tak zaczyna się ta historia. Development Różne typy obiektów Funkcje, procedury, agregaty, typy, wyzwalacze. Deployment Utworzenie / podmiana assembly, wygenerowanie skryptów aktualizujących Security Dostęp do obiektów

TSQL jest łatwy. więc dlaczego przy nim majstrować????? CREATE TABLE Tabela SELECT * FROM Tabela SELECT kolumna1, kolumna 2 FROM tabela UPDATE Tabela SET DELETE FROM Tabela. DROP DATABASE SHUTDOWN WITH NOWAIT

Czym nie jest SQLCLR Nie zastępuje języka T-SQL SQLCLR nie działa bezpośrednio z SQL Server Nie rozumie poleceń INSERT, UPDATE. Wymaga połączenia do bazy danych(*,**,***) Wykonywany jest poprzez wrappery Obiekty typu funkcja, procedura składowana itd

Czym nie jest SQLCLR (All or nothing) Wszystko albo nic Można uruchamiać kod CLR oraz kod TSQL w ramach np. jednej procedury składowanej Nie jest zawsze szybszy ani zawsze wolniejszy Są przykłady dobrego użycia (będzie dzisiaj) Są przykłady niedobrego użycia (będzie dzisiaj)

Co może zrobić SQLCLR Streaming TVF Funkcje inline napisane w TSQL są jak parametryzowane widoki Funkcji multiline pozwalają na bardziej skomplikowaną logikę Pisząc funkcję TSQL wynik jest zwracany dopiero po przygotowaniu całego zbioru (po wykonaniu) (*) SQLCLR może wysyłać dane NATYCHMIAST

Co może zrobić SQLCLR Dynamiczny SQL w ramach funkcji Uwaga wtedy wynik musi być przygotowany w całości zanim zostanie wysłany do klienta Multi Threading (w trybie unsafe) Obsługa błedów jak w.net Własne agregacje (ile ich jest w pudełku?) Własne typy danych Własne wyzwalacze

Co może zrobić SQLCLR Przechwytywanie informacji Komenda PRINT RAISERROR (severity 1-10) Równoległe wykonanie zapytań UDF, o ile ustawimy IsDeterministic=1 i nie ma dostępu do danych

Co może zrobić SQLCLR Zastąpić xp_cmdshell Łatwiejsze przekazywanie parametrów (bo xp_cmdshell przyjmuje tylko 1 parametr) Można zwrócić więcej niż jedną kolumnę Nie trzeba parsować wyniku Kod SQLCLR jest zachowywany w kopii zapasowej Impersonacja xp_cmdshell może się uruchomić tylko w kontekście SQL Server lub konta proxy

xp_cmdshell not beautiful anymore CREATE TABLE #DirResults (Diroutput VARCHAR(500)) INSERT #DirResults EXEC master.dbo.xp_cmdshell 'dir d:\mssql7\binn\bcp.exe' IF EXISTS(SELECT * FROM #DirResults WHERE DirOutput LIKE '%bcp.exe%') PRINT 'bcp.exe does exist' ELSE PRINT 'bcp.exe does not exist'

SqlContext SqlContext is a class that gives us access to four members: IsAvailable Pipe TriggerContext WindowsIdentity IsAvailable indicates whether the other members can be used

SqlContext.Pipe Pipe is the main point of interaction with the SQL Server when returning result sets or messages Messages can be sent to the client using the Send(string) function: SqlContext.Pipe.Send( Hello World ); Single row result sets can be sent using the Send(SqlDataRecord) function.

SqlContext.TriggerContext TriggerContext gives you access to: ColumnCount number of columns in the target table EventData SqlXml that returns the same as the EVENTDATA T-SQL function TriggerAction a TriggerAction enumeration value that specifies which action caused the trigger to fire IsUpdatedColumn method that determines if a column was updated same as the T-SQL UPDATE() function but what about the inserted and deleted virtual tables that are available in normal triggers?

SqlContext.WindowsIdentity This returns a standard System.Security.Principal.WindowsIdentity object The property can only be used under EXTERNAL_ACCESS or UNSAFE permission sets For 99% of CLR work, using this property is not required

Context Connection To access data from within CLR code, the special context connection connection string is used (**,***) using (SqlConnection connection = new SqlConnection("context connection=true")) { connection.open();... } We can then run any SQL statement as we would normally from.net

Piszemy i tłumaczymy kod UDF skalarna Procedura składowana DEMO

Assemblies, domains AppDomain / DB / Owner One for runtime and one for the DDL (will be unloaded)

Abnormal conditions

Trzy tryby Bezpieczeństwo

Bezpieczeństwo

Bezpieczeństwo

DEMO Tak NIE piszemy kodu, czyli horror w zaledwie 4 linijkach

UDF - Tablicowa Muszą być zaimplementowane 2 metody IEnumerable lub IEnumerator zwracający dane (np. List<>) FillRow Czyli uformowanie konkretnego wiersza zgodnie z definicją zwracanej tabeli Często dodatkowa struktura operacje rzutowania Object na konkretny obiekt biznesowy

UDF Tablicowa Wydajność DEMO

Podsumowanie Należy poznać elementy oraz składniki integracji Kreatywne rozszerzanie możliwości oferowanych przez SQL Server Zwłaszcza obszary do tej pory niedostępne Kod kontrolowany przez SQL Server napisany w.net (C#, VB, C++)