CLR Stored Procedures

Post on 04-Jul-2015

856 views 5 download

description

Presentation I used in JAN monthly meetup on SQL Server Universe community (http://www.sqlserveruniverse.com).

Transcript of CLR Stored Procedures

Harshana Weerasinghehttp://about.me/harshana

SQL CLR

CLR Stored Procedures

The Need For CLR Stored

Procedures

Drawbacks

Configuration

How to use (demo)

Debugging SQL CLR DLLs

External Access

External Access (demo)

Deployment

Is the technology that hosts the Microsoft .NET Common Language Runtime engine within SQL Server.

SQLCLR allows managed code to be hosted by, and run in, the Microsoft SQL Server environment

Similar to normal Stored Procedures, but code written using Microsoft .NET (C#, VB.NET or any language in .NET)

Works as an MSIL assembly integrated with the SQL Engine.

Gives better results while executing complex logic: Intense string operations/string manipulation

Cryptography

Accessing system resources

File Management

CLR Stored Procedures are managed code Ensures type safety

Ensures memory management

Better code management

Provides object oriented programming Encapsulation

Polymorphism

Inheritance

Can be written using C#

VB

Any other language that the .NET Framework supports

Not convenient in all scenarios

E.g. they should not be used to execute simple queries.

Deployment may be difficult in some scenarios.

Enable CLR in SQL Server

SqlPipe Debug Send SQL query as a result Custom Result Sets

Single record

Multiple records (SendResultsStart, SendResultsRow, SendResultsEnd)

Connection String ADO.NET

“Cannot load dynamically generated serialization assembly”

Add post build event

"C:\Program Files (x86)\Microsoft Visual Studio 8\SDK\v2.0\Bin\sgen.exe" /force "$(TargetPath)"

More information :http://support.microsoft.com/kb/913668

Deploy assembly

SP

What Sgen.exe does ?

The XML Serializer Generator creates an XML serialization assembly for types in a specified assembly in order to improve the startup performance of a XmlSerializer when it serializes or deserializes objects of the specified types.

What is the deference between PERMISSION_SET SAFE, EXTERNAL_ACCESS and UNSAFE ? Code executed by an assembly with SAFE permissions cannot access

external system resources such as files, the network, environment variables, or the registry and EXTERNAL_ACCESS can access.

UNSAFE enables assemblies unrestricted access to resources, both within and outside an instance of SQL Server. Code running from within an UNSAFE assembly can call unmanaged code.

List down Benefits of using CLR Stored Procedures

See the “The Need For CLR Stored Procedures” in presentation.