October 12, 2015 at 11:54 am
in Visual Studio I created a Solution where I have two projects.
Project A is a Sql Server CLR project Target is Sql Server 2008 and .Net 3.5
Project B is a C# class where my webservices are at.
I didn't notice this problem straight away, I knew i was missing the XMLSerilizers but when I loaded the .dll into Sql Server 2014 (dev box) I was able to hook in my udf call to the SQL CLR and it calls the function just fine.
My production box is a Sql Server 2008 R2 but of course now I get the following error:
Msg 6522, Level 16, State 1, Line 1
A .NET Framework error occurred during execution of user-defined routine or aggregate "fn_myFunction":
System.InvalidOperationException: Cannot load dynamically generated serialization assembly. In some hosting environments assembly load functionality is restricted, consider using pre-generated serializer.
I'm guessing it's because I don't have the XMLSerializer dll like I do in my previous calls (all built with Visual Studio 2005 pro many boxes ago). I do not have that version of visual studio, and I can't seem to get the XMLSerializer dll at all?
has anybody rebuilt a webservice call using a user defined function using the newer Visual Studio versions and still gotten an XMLSerializer? if so what were the steps?
my code is in the Sql Project as shown below; typically I would have built the method on the C# class but I already had it written this way (simplified for the example) but it works in sql 2014 and not on 2008R2... thoughts?
private class myRows
{
public SqlInt32 PKID;
public SqlString strValue;
public myRows(SqlInt32 pkid, SqlString strvalue)
{
PKID = pkid;
strValue = strvalue;
}
}
[Microsoft.SqlServer.Server.SqlFunction(FillRowMethodName = "getSAPFields_FillRow",
TableDefinition = "pkid int,Field1 nvarchar(20)")]
public static IEnumerable getMyFields(string strSN, string strModel)
{
ws_serverCall.BAPI_ITOB outITOB = new ws_serverCall.BAPI_ITOB();
ws_serverCall.WS_SERVERCALL ws = new ws_serverCall.WS_SERVERCALL();
ws.WS_SERVERCALL(strModel, strSN, out outDATA);
ArrayList myArray = new ArrayList();
myArray.Add(new myRows(-777, outDATA.FieldData)));
return new ArrayList(myArray);
-- Francisco
October 12, 2015 at 4:41 pm
It looks like for Visual Studio 2012, I need to run sgen from the Visual Studio Command Prompt like this: sgen path to .dll and you get the dllName.XMLSerializer.dll file
Next Question... after all that, it seems I still get the error of: Cannot load dynamically generated serialization assembly. In some hosting environments assembly load functionality is restricted, consider using pre-generated serializer.
-- Francisco
October 12, 2015 at 5:22 pm
I had to run sgen on my class and add it to my assembly as well..
hope this helps someone too.
-- Francisco
Viewing 3 posts - 1 through 2 (of 2 total)
You must be logged in to reply to this topic. Login to reply
This website stores cookies on your computer.
These cookies are used to improve your website experience and provide more personalized services to you, both on this website and through other media.
To find out more about the cookies we use, see our Privacy Policy