Click here to monitor SSC
SQLServerCentral is supported by Redgate
Log in  ::  Register  ::  Not logged in
Home       Members    Calendar    Who's On

Add to briefcase

Cannot create assembly referencing system.core v3.5.0.0 Expand / Collapse
Posted Friday, September 5, 2008 8:18 AM
Forum Newbie

Forum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum NewbieForum Newbie

Group: General Forum Members
Last Login: Wednesday, October 7, 2015 7:07 AM
Points: 1, Visits: 105

We have developed a number of components implementing business logic in .Net 3.5 and using VS 2008. One of those components is a DLL implementing interpolation methods and it has a reference to System.core as it uses Linq. It is signed with a private key.

I would like to be able to use this functionality from a UDF and\or stored procedure in SQL Server 2005. I have copied all the referenced assemblies in the same folder as the DLL on the server, including the System.core.dll. I tried to create the assembly using the following T-SQL statement:

FROM 'path to assembly files'

This returns the following error:

Warning: The Microsoft .Net frameworks assembly 'system.core, version=, culture=neutral, publickeytoken=b77a5c561934e089, processorarchitecture=msil.' you are registering is not fully tested in SQL Server hosted environment.
Msg 6218, Level 16, State 2, Line 1
CREATE ASSEMBLY for assembly 'AssemblyName' failed because assembly 'System.Core' failed verification. Check if the referenced assemblies are up-to-date and trusted (for external_access or unsafe) to execute in the database. CLR Verifier error messages if any will follow this message
[ : System.Diagnostics.Eventing.EventProvider::EtwRegister][mdToken=0x600003b][offset 0x0000003D][found Native Int][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::EncodeObject][mdToken=0x6000046][offset 0x00000000] Unmanaged pointers are not a verifiable type.
[ : System.Diagnostics.Eventing.EventProvider::WriteMessageEvent][mdToken=0x6000047][offset 0x0000003C][found ref 'System.String'] Expected numeric type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x6000049][offset 0x0000012E] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x6000049][offset 0x00000030] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x600004a][offset 0x0000005F][found ref 'System.String'] Expected numeric type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteEvent][mdToken=0x600004b][offset 0x00000010][found unmanaged pointer][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004c][offset 0x0000007D] Instruction cannot be verified.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004c][offset 0x00000309][found Native Int][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Diagnostics.Eventing.EventProvider::WriteTransferEvent][mdToken=0x600004d][offset 0x0000001B][found unmanaged pointer][expected unmanaged pointer] Unexpected type on the stack.
[ : System.Linq.Expressions.ExpressionCompiler::GenerateLambda][mdToken=0x6000374][offset 0x00000046] Unable to resolve token.
[ : System.Security.C...

The only resolution that was suggested was to use PERMISSION_SET = UNSAFE and set the database to TRUSTWORTHY which I don't want to do.

Is there any other solution to this?

Many thanks in advance.

Post #564617
Posted Friday, September 5, 2008 8:47 PM



Group: General Forum Members
Last Login: Friday, January 1, 2016 7:07 AM
Points: 1,688, Visits: 1,807
Abstract the logic that you want to use inside SQL Server to a new assembly and restrict it to the approved assembly list only. That is the only alternative to registering the unapproved .NET DLL's as UNSAFE in the Database.

Jonathan Kehayias | Principal Consultant | MCM: SQL Server 2008
My Blog | Twitter | MVP Profile
Training | Consulting | Become a SQLskills Insider
Troubleshooting SQL Server: A Guide for Accidental DBAs
Post #564979
Posted Monday, September 8, 2008 7:33 AM



Group: General Forum Members
Last Login: Yesterday @ 12:32 PM
Points: 10,807, Visits: 14,829
I had thought that in SQL Server 2005 the CLR was only .NET 2.0 compliant so that 3.5 assemblies will not work, thus no Linq availability. I could be wrong.

Jack Corbett

Applications Developer

Don't let the good be the enemy of the best. -- Paul Fleming
At best you can say that one job may be more secure than another, but total job security is an illusion. -- Rod at work

Check out these links on how to get faster and more accurate answers:
Forum Etiquette: How to post data/code on a forum to get the best help
Need an Answer? Actually, No ... You Need a Question
How to Post Performance Problems
Crosstabs and Pivots or How to turn rows into columns Part 1
Crosstabs and Pivots or How to turn rows into columns Part 2
Post #565391
Posted Wednesday, September 10, 2008 1:05 AM


Group: General Forum Members
Last Login: Wednesday, November 17, 2010 5:56 PM
Points: 185, Visits: 637
I know that it's possible to use .NET 3.0 assemblies (to call a WCF service for example) but as far as I know they haven't been tested so the same would probably go for .NET 3.5. Perhaps you could re-write the linq stuff to not use linq (unless there is way too much of it).
Post #566631
« Prev Topic | Next Topic »

Add to briefcase

Permissions Expand / Collapse