Hi; you might want to ping me directly for protobuf-net issues (this list
is the wider "protobuf" group, covering many implementations)
I have never tried using protobuf-net with SQL CLR, for the simple reason
that I very rarely use SQL CLR, however there is not, AFAK, and fundamental
reason it *shouldn't* work. Looking at the error dump, this ties into the 4
places where the code (conditionally) makes use of "unsafe" code to switch
floating point numbers to their constituent bytes. This can be avoided by
using the optional FEAT_SAFE build symbol, which results in slightly slower
transformation to/from floating point, but: verifiable.
The generated IL makes extensive use of PEVerify in the test suite, so any
dynamic assemblies should be verifiable; I do, however, wonder if SQL CLR
will restrict the use of meta-programming. We'll have to see, I guess. But
there are alternative protobuf-net builds for limited runtimes
(Silverlight, iOS, unity, etc), so it should work.
Before you get carried away, though, I should emphasise; in my opinion,
your DB server is a pretty hard place to scale. I would strongly recommend
you limit this type of activity to higher tiers, such as your app-server or
web-server. Databases should store data. This is a hotly contended subject,
and you'll have to make your own decision! I should also note that
DataTable, while usable in this way, is not a particularly strong model.
It'll work, but... just.
I've got your email - would you like me to send you a copy of the current
code compiled with FEAT_SAFE?
On 19 December 2011 19:11, Scott Moore <scott.moor...@gmail.com> wrote:
> I readily admit that I am a bit of a novice developer (I work in a
> small business and we all help as much as possible). I came across
> the protocolbuf-net and it saved the day. We were not able to
> serialize our DataTable using .NET components because they were too
> large. But your stuff did the trick beautifully.
> I need to register the protocolbuf-net dll with SQL CLR but I am
> getting an error and I am completely stumped. Hopefully you can
> I am running the following command in SQL Server 2008 R2:
> CREATE ASSEMBLY ProtobufNet
> FROM N'C:\Software\protobuf-net_r480\net20\protobuf-net.dll'
> WITH PERMISSION_SET = SAFE
> I get the following error:
> Msg 6218, Level 16, State 2, Line 1
> CREATE ASSEMBLY for assembly 'protobuf-net' failed because assembly
> 'protobuf-net' 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
> [ : ProtoBuf.ProtoReader::ReadDouble][mdToken=0x6000232][offset
> 0x00000020][found address of Long] Expected numeric type on the stack.
> [ : ProtoBuf.ProtoReader::ReadSingle][mdToken=0x600023d][offset
> 0x00000018][found address of Int32] Expected numeric type on the
> [ : ProtoBuf.ProtoWriter::WriteDouble][mdToken=0x600027f][offset
> 0x00000032][found address of Double] Expected numeric type on the
> [ : ProtoBuf.ProtoWriter::WriteSingle][mdToken=0x6000280][offset
> 0x00000011][found address of Single] Expected numeric type on the
> How do I get this DLL to register? The project is to create a SQL CLR
> stored procedure that executes a query into a DataTable and then
> serializes and compresses the results which are fed to a client which
> in turn decompresses and deserializes. I can get all the code to work
> without fail, but the DLL has to be registered with SQL and I have to
> register protobuf-net, too.
> Thanks in advance!
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To post to this group, send email to email@example.com.
> To unsubscribe from this group, send email to
> For more options, visit this group at
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To post to this group, send email to firstname.lastname@example.org.
To unsubscribe from this group, send email to
For more options, visit this group at