Solved

Create DLL for SQL Server

Posted on 2014-01-21
20
1,000 Views
Last Modified: 2014-01-26
I've created a class in VB.Net. Now I want to turn it into a class library, register it with SQL Server and call it from a stored procedure there. What are the steps?
0
Comment
Question by:TimHudspith
  • 9
  • 8
  • 2
  • +1
20 Comments
 
LVL 42

Accepted Solution

by:
EugeneZ earned 300 total points
ID: 39796507
what is your sql server version?

if fresh one use this step-by-step example

'The Hello World sample demonstrates the basic operations that are involved in creating, deploying, and testing a simple common language runtime (CLR) integration-based stored procedure.'

http://technet.microsoft.com/en-us/library/ff878250.aspx
0
 
LVL 142

Assisted Solution

by:Guy Hengel [angelIII / a3]
Guy Hengel [angelIII / a3] earned 200 total points
ID: 39796509
here is the entry point for the CLR integration:
http://msdn.microsoft.com/en-us/library/ms254498%28v=vs.110%29.aspx

the actual installation of the assembly is described here:
http://msdn.microsoft.com/en-us/library/ms345099%28SQL.100%29.aspx

that should be all, so far. just do it on a dedicated test server first, just to make sure you can easily stop/restart the sql service, and replace the assembly file as needed.
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 39796586
0
 

Author Comment

by:TimHudspith
ID: 39796778
I tried to create the assembly in SQL Server (2008) but got the message:

'CREATE ASSEMBLY failed because the assembly is built for an unsupported version of the CLR runtime.'

The .dll was created in Visual Studio 2010.
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 39796832
are you sure that you are targeting framework 3.5?

try creating a new test project like I explain in my article.
0
 

Author Comment

by:TimHudspith
ID: 39796856
I followed one of the earlier links to MSDN. I changed the compiler settings for the .dll to .Net 3.5 and tried again to create the assembly in SQL Server. It almost seemed to work but said that my class uses the System.Drawing namespace, which it doesn't recognise, so I need to load that, but I don't know how.

I also ran the code 'select * from sys.dm_clr_properties' and see that SQL Server 2008 uses .Net 2.0, so am wondering why setting my .dll to target framework 3.5 would work?
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 39796872
Normally, .Net Framework 3.5 is installed on SQL 2008. Try to target 2.0 to test.
0
 

Author Comment

by:TimHudspith
ID: 39796977
Still the same.

Is there a way that I can get SQL Server to reference .Net 3.5, instead of 2.0?
And/or how can I load up the missing assembly (System.Drawing)?
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 39796981
install it on the server
0
 

Author Comment

by:TimHudspith
ID: 39796999
System.Drawing assembly or .Net 3.5 as a whole?

Can you tell me how to do it?
0
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 
LVL 69

Expert Comment

by:Éric Moreau
ID: 39797062
you cannot install part of it. check http://www.microsoft.com/en-us/download/details.aspx?id=21
0
 

Author Comment

by:TimHudspith
ID: 39797099
I don't need to download it. I already have .NET 4.0 on my machine, but SQLCLR is using the 2.0 framework. How do I get it to change?
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 39797168
could it just be that you have different SP on your PC and on your server?

do you have SQL server installed locally so that you can fully try it first on your PC?
0
 

Author Comment

by:TimHudspith
ID: 39797229
I'm taking a different route, creating the DLL using the SQL CLR Project template as per your website, although I've hit a hurdle right at the start. When I get to add the database reference, it lists my server, but the dropdown list is empty, none of my databases is shown.
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 39797237
do you have SQL server installed locally so that you can fully try it first on your PC?
0
 

Author Comment

by:TimHudspith
ID: 39797242
OK, ignore that. I just needed to add "\SQLexpress" to the server reference.
0
 

Author Comment

by:TimHudspith
ID: 39797376
Run into the same problem: the System.Drawing assembly is not a listed reference there either. Apparently it IS possible to load individual assemblies into SQL Server, as follows:

CREATE ASSEMBLY [System.Drawing] AUTHORIZATION dbo 
FROM 'C:\Windows\Microsoft.NET\Framework64\v2.0.50727\System.Drawing.dll'
WITH PERMISSION_SET = UNSAFE

Open in new window

In this case I got the message that the owner must have UNSAFE ASSEMBLY permission and that the database must have the TRUSTWORTHY property on. I fixed the TRUSTWORTHY property, and am now trying to find out how to change the UNSAFE ASSEMBLY setting.
0
 
LVL 69

Expert Comment

by:Éric Moreau
ID: 39797401
sorry but I cannot help you on that topic
0
 
LVL 42

Assisted Solution

by:EugeneZ
EugeneZ earned 300 total points
ID: 39797742
see
PERMISSION_SET = { SAFE | EXTERNAL_ACCESS | UNSAFE }
ALTER ASSEMBLY
http://technet.microsoft.com/en-us/library/ms186711(v=sql.100).aspx
0
 

Author Comment

by:TimHudspith
ID: 39809897
To set unsafe assembly permission I had to change the database owner to the system admin account. Then it worked.

USE <DatabaseName>
GO
EXEC sp_changedbowner ‘sa’
0

Featured Post

Free Gift Card with Acronis Backup Purchase!

Backup any data in any location: local and remote systems, physical and virtual servers, private and public clouds, Macs and PCs, tablets and mobile devices, & more! For limited time only, buy any Acronis backup products and get a FREE Amazon/Best Buy gift card worth up to $200!

Join & Write a Comment

Introduction SQL Server Integration Services can read XML files, that’s known by every BI developer.  (If you didn’t, don’t worry, I’m aiming this article at newcomers as well.) But how far can you go?  When does the XML Source component become …
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Via a live example, show how to extract insert data into a SQL Server database table using the Import/Export option and Bulk Insert.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now