sqlclr programming with sql server 2005 - by andrew novick

Post on 09-Apr-2018

229 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 1/65

© 2006 Andrew Novick

SQLCLR Programming with SQL Server 2005Andrew Novick

SQLCLR Programming

with SQL Server 2005

 Andrew Novick

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 2/65

© 2006 Andrew Novick

SQLCLR Programming with SQL Server 2005Andrew Novick

The Subject:

What is SQLCLR programming?

Why would you use it?

Why not to use it?

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 3/65

© 2006 Andrew Novick

SQLCLR Programming with SQL Server 2005Andrew Novick

Introduction ± Andrew Novick

Novick Software

 ± Business Application Development

 ± SQL Server and .Net specialization

www.NovickSoftware.com

Books:

 ± Transact-SQL UDFs

 ± SQL 2000 XML Distilled

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 4/65

© 2006 Andrew Novick

SQLCLR Programming with SQL Server 2005Andrew Novick

 Authorship

This presentation is based in part on material developed for the

Mini Code-Camp ³Programming SQL Server: From 2000 to

2005´ By Andrew Novick and Adam Machanic

 Adam¶s Web site is:

http://www.datamanipulation.net

 Andrew Novick¶s Web Site is:

http://www.NovickSoftware.com

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 5/65

© 2006 Andrew Novick

SQLCLR Programming with SQL Server 2005Andrew Novick

What Is SQLCLR?

Writing code using .Net Languages that r unsinside SQL Server.

 ± User-Defined Functions

 ± Stored Procedures ± Aggregates

 ± User-Defined Types

 ± Triggers

 ± SSIS Packages

 ± Expressions and Data Providers in Reports

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 6/65

© 2006 Andrew Novick

SQLCLR Programming with SQL Server 2005Andrew Novick

Why Use .Net in S2K5

Replace Extended SP¶s with a safer alternative

Replace COM automation: sp_ O A_*

Take advantage of .Net Framework classes

Run computationally intense algorithms Reuse code

Programmer productivity

Use new capabilities not available inT

-SQL ± User Defined Types

 ± User Defined Aggregates

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 7/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Hosting the CLR

S2K5 is one of many CLR hosts

 ± Such as: ASP.Net, WinForms

Goals for CLR hosting: ± Security

 ± Reliability

 ± Performance

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 8/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

SQLCLR Overall Architecture

Runtime hosted within SQL Server¶s

process space

³OS´ layer provided by SQL Server¶s

scheduler, SQLOS ± Memory

 ± Processor 

 ± IO Hosting enabled on a per-server basis

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 9/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

SQLCLR AppDomains

App Domains created per database, per assembly owner 

SQL Server will restart an app domain if itdetects:

 ± Deadlocks

 ± Memory leaks

 ± Hung threads

 ± « And other abnormal conditions

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 10/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

CLR is Optional!

Disabled by default

You must turn it on to use it

 ± SQL Server 2005 Surface Area Configuration

 ± This script:

EXEC sp_configure 'show advanced options' , '1';

goreconfigure;

goEXEC sp_configure 'clr enabled' , '1'

goreconfigure;

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 11/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

 Assemblies

.Net Code compiled into an IL DLL

Assemblies must be added to S2K5 with

CREATE ASSEMBLY

Bits are stored in the database¶s

sys.assembly_files table

CREATE ASSEMBLY my_assembly_name

FROM µ\\myserver\«path\MyAssembly.dll¶

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 12/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

 Assemblies 2

Viewing Assemblies

 ± SQL Management Studio

 ± Ref lector with the SQL 2005 Browser 

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 13/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

 Assembly Security: PERMISSION_ SET

S AFE

 ± Allows data access, basic libraries

EXTERNAL _ACCESS

 ± Allows access to IO libraries

UNS AFE

 ± Allows access to unmanaged code

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 14/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

PERMISSION_ SET: Safe

May not access external resources:registry, file system, or network

May not use unmanaged code or PInvoke

May access data using the current contextbut not via SQLClient or any other data

provider 

No thread processing

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 15/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

PERMISSION_ SET: EXTERNAL _ACCESS

May access external resources:registry, file system, network, environment

variables

May not use:

 ± unmanaged code

 ± PInvoke

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 16/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

PERMISSION_ SET: UNS AFE

Can do anything«

Know your code!

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 17/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

SQLCLR 

User-Defined Functions

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 18/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Overview of CLR UDFs

Two Types ± Scalar 

 ± Table-Valued

Similar Rules

 ± No side effects

More f  lexible ± Can use the .Net Base Classes

 ± Can use user created classes

 ± Can execute Dynamic SQL

Performance ± Similar to better than T-SQL

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 19/65

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 20/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

CLR Scalar Functions

Simple and Flexible

.Net Functions

Usef  ul for encapsulating BCL f unctionality

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 21/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

CLR Table-Valued Functions

³Streaming´: Returns one row at time

Requires a method with:

 ± Returns IEnumerable

 ± SqlFunctionAttribute

A second method ³shreds´ the data

 ± FillRowMethod ± Columns defined by output parameters

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 22/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

CLR Table-Valued Function Lifecycle

SQL Server invokes IEnumerable method

Which returns a reference to the collection

SQL Server enumerates the collection

Enumerate() calls the FillRowMethod

 ± Input object is mapped to output parameters

by the

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 23/65

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 24/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

SQLCLR Stored Procedures

Can do everything that T-SQL sprocs can

 ± Multiple result sets

 ± Output Parms

 ± Messages ± Return Code

Can do what other SQLCLR objects can: ± C# or VB.net code

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 25/65

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 26/65

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 27/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

The Same Rules Apply..!

ADO.NET in-process provider makes iteasy to move code between tiers

Best practice in the application tier:

 ± Use T-SQL stored procedures to encapsulatedatabase data access

Best practice in the data tier (CLR stored

procedure or UDF): ± Use T-SQL stored procedures to encapsulate

database data access

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 28/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

 ADO.NET: Sending Back Data

SqlPipe

 ± Send()

Result Sets (SqlDataReader)

Rows (SqlDataRecord) Messages (System.String)

 ± ExecuteAndSend()

Executes SqlCommand in the connected context Should probably be called SendAndExecute()

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 29/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

CLR Stored Procedures

Best for: ± External Data Sources

 ± Multiple output parameters from external datasources

 ± complex math/logic

Not indicated for 

 ± single result sets ± single scalar output

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 30/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

SQLCLR

User Defined Aggregates

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 31/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

User Defined Aggregates

Aggregates scalar values into another scalar 

Uses the SqlUserDefinedAggregate attribute

CREATE AGGREGATE [Product](@Value float)

Returns [float]EXTERNAL NAME

[SampleAggregate].[SampleAggregate.Product]

go

GRANT EXEC ON dbo.Product TO PUBLICgo

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 32/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Possible UDAGGs

Product

CountOfNulls

BitwiseOr 

Concatenation

RegExMatchCount

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 33/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Impossible UDAGG

First

Last

Impossible due to possible Parallelism

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 34/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

User Defined Aggregate Class

public class myAggregate

{

public void Accumulate (<input-type> value){ }

public <return-type> Terminate() { }

public void Init () { }

public void Merge (myAggregate) { }

}

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 35/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

UDAGG: Init

Public Sub Init()

m_Accumulator = 1.0m_HasNonNull = False

End Sub

Initialize the aggregate

Reinitializes the when SQL Server 

chooses to reuse it.

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 36/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

UDAGG: Accumulate

Public Sub Accumulate(ByVal value As SqlDouble)if value.isnull then exit sub

m_Accumulator *= value

m_HasNonNull = True

End Sub

Called once per row to be aggregated.

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 37/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

UDAGG: Merge

SQL Server may use multiple threads for an aggregation.

Each thread would need it¶s own instance

of the UDAGG class. Results combined by the Merge method.

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 38/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

UDAGG: Merge

Public Sub Merge(ByVal value As Product)

if value is nothing then exit sub

if not value.m_HasNonNull then exit subm_Accumulator *= value.m_Accumulator

m_HasNonNull = True

End Sub

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 39/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

UDAGG: Terminate

Public Function Terminate() As SqlDouble

if not m_HasNonNull then

return sqldouble.nullelse

Return m_Accumulatorend if

End Function

Terminate method returns the results.

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 40/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Using the User Defined Aggregate

SELECT dbo.product(sample) [Three integers]

FROM ( SELECT CAST(1.0 as float) as SampleUNION ALL SELECT 3

UNION ALL SELECT 5) Numbers

(Result)

Three integers

---------------

15

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 41/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Best Practices: UDAGG

Consider T-SQL alternatives

Use SQLTypes

Code efficiently

No SQL input if you can help it.

If you need data, create a cache.

Remember Parallel execution

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 42/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

User-DefinedT

ypes

UDT

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 43/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Two Types of UDTs

Alias Types

CLR Types

Both use the CREATE TYPE statement

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 44/65

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 45/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

CLR User-Defined Types (UDTs)

Created with the .Net CLR in VB.Net or C#

New to SQL Server 2005

Example:

CREATE Assembly myAssembly FROM

µ\\server\share\myAssembly.dll

Go

CREATE TYPE myType

EXTERNAL NAME myAssembly.[myAssembly.myType]

go

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 46/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Why CLR User-Defined Types

Encapsulate application logic and data inthe database.

Benefits: ± Programmer productivity

 ± Consistency over the long term

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 47/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Steps to create a CLR UDT

 ± Create a Class in a .Net language (VB or C#)

 ± Create the ASSEMBLY database object

 ± CREATE TYPE statement

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 48/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

CL ASS or Str ucture

Class is a reference type

Str ucture is a Value type

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 49/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Create your CL ASS

Required attributes:<Serializable()> _<Microsoft.SqlServer.Server.SqlUserDefinedType(Format

.Native)>

Required Interface: INullable

Required Methods:

ToStringParse

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 50/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Your Class

Public and Private fields

Static (Shared in VB) and instance members

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 51/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

SqlUserDefinedType Attribute

Format: Native, UserDefined

IsByteOrdered

IsFixedLength

MaxByteSize

Name

ValidationMethodName

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 52/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

 Assemblies

.Net Code compiled into an IL DLL

Assemblies must be added to S2K5 with

CREATE ASSEMBLY

Bits are stored in the database¶ssys.assembly_files table

CREATE ASSEMBLY my_assembly_name

FROM µ\\myserver\«path\MyAssembly.dll¶

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 53/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

CREATE TYPE statement

CREATE TYPE [ schema_name.] type_name

{

FROM base_type

[ ( precision [ , scale ] ) ][ NULL | NOT NULL ]

| EXTERNAL NAME assembly_name

[ .class_name ]

} [ ; ]

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 54/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Type Name Rules

Standard Rules for identifiers.

Recommendation: Keep It Simple

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 55/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

TYPE Permissions

References

Execute

These apply to:

 ± Assembly

 ± Type

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 56/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Using Types in SQL

CREATE T ABLE Office (id int, location GEOPOINT)

SELECT id, Location. LatitudeLocation.Longitude

FROM Office

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 57/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Type Considerations

.Net value types don¶t represent NULL

System.Data.SQLTypes represent NULL

Use the SQLTypes when possible

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 58/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

User Defined Types

Best used for scalar types

Not ideally suitable for ³Classes´

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 59/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Best Practices - UDTs

UDTs should represent scalar objects

Separate assembly to each group of UDTs

Test extensively before deployment

Keep caref ul track of the DLL¶s

 ± Use Source Control for them.

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 60/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Summary

SQLCLR is a powerf ul new feature Advantages

 ± Use .Net base-class-library

 ± Implement Complex Code ± Interface with external resources

Cautions:

 ± Doesn¶t relpace T-SQL well

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 61/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

 Andy¶s Books

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 62/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Resources

Newsletter about SQL Coding

T

heme for Fall 2005 is.Net CLR Programming

http://www.novicksoftware.com/coding-in-sql/coding-in-sql-signup.htm

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 63/65

© 2006 Andrew NovickSQLCLR Programming with SQL Server 2005Andrew Novick

Download Slides and Examples

Download this presentation and samplesfrom:

http://www.novicksoftware.com/Presentations.htm

New England Visual Basic

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 64/65

© 2006 Andrew Novick

SQLCLR Programming with SQL Server 2005Andrew Novick

New England Visual Basic

Professionals

Focused on VB.Net development

Meetings @ MS Waltham

 ± 1st Thursday - 6:15 to 8:30

Coming up: ± Febr uary ± AviCode ± ASP.Net monitoring

 ± March ± Adam Machanic ADO.Net 2.0

 ± April ± Jesse Liberty

8/8/2019 SQLCLR Programming With SQL Server 2005 - By Andrew Novick

http://slidepdf.com/reader/full/sqlclr-programming-with-sql-server-2005-by-andrew-novick 65/65

SQLCLR Programming with SQL Server 2005

Thanks for Coming

 Andrew Novick

anovick@novicksoftware.com

http://www.NovickSoftware.com

978-440-8126

top related