2013-03-02 22 views
7

Uzak MSMQ'lara ileti göndermek için MsmqIntegrationBinding kullanılan bir CLR tabanlı saklı yordamım var. Her şey SQL Server 2005'te gayet iyi çalışıyordu, ancak şimdi 2005'ten 2012'ye kadar gerçekleşecek bir yükseltme var. SQL Server 2012'de CLR'yi (SP) kaydetmeyi denedim ancak System.ServiceModell.DLL'u kaydederken aşağıdaki hata oluştu. montaj 'microsoft.visualbasic.activities.compiler' bozuk veya değil saf bir .NET derleme olduğu için Msg 6544, Düzey 16, State 1, Line 1
montaj için MONTAJ 'System.ServiceModel' CREATESQL Server 2012'de CLR işlevini (WCF tabanlı) kaydetme

başarısız . Uygun Olmayan PE Üstbilgi/yerel saplama.

Ben çözünürlük aranır ve birkaç kişi aynı sorunu yaşıyorsanız ve şu andan itibaren kendisine hiçbir çözüm yoktur anlaşılmaktadır.

MSMQIntegrationBinding'u kullanmanın birincil nedeni, her iletinin yalnızca bir kez teslim edildiğinden emin olmak istedik. Gördüğünüz gibi, normal system.messaging sınıfında olmayan ExactlyOnce özelliğiyle ilgilendiğimi görebilirsiniz. Binlerce mesaj işliyoruz ve mesajların sıralanması çok daha önemlidir, her mesaj bir kimlik ile damgalanır ve eğer daha önce istemci sisteminin gönderdiği mesajdan daha az bir kimlik içeren herhangi bir mesaj gönderilirse (büyük sorun).

Ayrıca system.messaging kullanarak CLR saklanan procunu yeniden yazdım. Yukarıda bahsettiğim senaryoyu destekleyip desteklemeyeceğine dair önerilere ihtiyacım var.

+0

WCF hizmetini çağırın, bunun yerine çağrıyı bir sıraya yönlendirin. – abatishchev

+0

SQL Server ve derlemenin bitliği nedir? – abatishchev

cevap

2

Sizinle aynı sorunu yaşıyorum ve bunun için bir çözüm olup olmadığını bilmiyorum. Ne bulduğum:

İki tür .NET derlemesi vardır. Saf .NET derlemeleri yalnızca MSIL yönergeleri içerir. Karışık montajlar hem yönetilmeyen makine talimatlarını hem de MSIL talimatlarını içerir. Genel olarak karma derlemeler, C++ derleyicisiyle/clr anahtarıyla derlenir, ancak yerel C++ kodundan kaynaklanan makine yönergeleri içerir.

SQL Server'ın hangi sürümü olursa olsun, CREATE ASSEMBLY yalnızca salt .NET derlemelerinin kaydedilmesine izin verir. SQL Server, SQL Server veritabanına CREATE ASSEMBLY ile yüklenecek bir derlemenin yalnızca MSIL yönergeleri (salt derleme) içerdiğini her zaman gerektirir. MONTAJ OLUŞTURULMASI, bir montajın bir araya getirilip birleştirilmemesi durumunda yukarıdaki hatayı kaldıracaktır. http://blogs.msdn.com/b/psssql/archive/2013/02/23/unable-to-register-net-framework-assembly-not-in-the-supported-list.aspx

nokta itibaren

biz gerçekten System.ServiceModel başvurmak gerekir olmasıdır.

Tahminimce, yakın bir gelecekte bunun için bir çözüm yok. Yapmamız gereken şey başka bir şekilde kodlamak.

+1

Diğer yol nedir? Bir çözüm buldun mu? – sojim2