2013-03-02 56 views
7

Tôi có quy trình lưu trữ dựa trên CLR sử dụng MsmqIntegrationBinding để đăng thông báo lên MSMQ từ xa. Tất cả mọi thứ đã làm việc tốt trong SQL Server 2005 nhưng bây giờ có một nâng cấp từ năm 2005 đến năm 2012 giả sử xảy ra. Tôi đã cố gắng để đăng ký CLR (SP) trong SQL Server 2012 nhưng trong khi đăng ký System.ServiceModell.DLL nó đã đưa ra lỗi sau.Đăng ký chức năng CLR (WCF) trong SQL Server 2012

Msg 6544, Level 16, State 1, Line 1
CREATE HỘI để lắp ráp 'System.ServiceModel' thất bại vì lắp ráp 'microsoft.visualbasic.activities.compiler' bị thay đổi hay không một assembly .NET tinh khiết . Tiêu đề PE không thể xác minh/gốc gốc.

Tôi đã tìm kiếm giải pháp và có vẻ như một số người khác đang gặp sự cố tương tự và hiện tại không có giải pháp cho nó.

Lý do chính để sử dụng MSMQIntegrationBinding là chúng tôi muốn đảm bảo rằng mỗi thư chỉ được gửi một lần. Như bạn có thể thấy rằng tôi đã khá quan tâm đến tài sản ExactlyOnce mà không có trong lớp system.messaging bình thường. Chúng tôi xử lý hàng ngàn tin nhắn và sắp xếp các tin nhắn là rất quan trọng hơn mỗi thông điệp được đóng dấu với một id và nếu bất kỳ tin nhắn được gửi trong đó có một id đó là ít hơn tin nhắn trước đó gửi hệ thống khách hàng tạm dừng (vấn đề lớn).

Tôi cũng đã viết lại proc được lưu trữ CLR bằng cách sử dụng system.messaging. Tôi chỉ cần gợi ý cho dù nó có thể hỗ trợ kịch bản tôi đã đề cập ở trên.

+0

Gọi dịch vụ WCF thay thế sẽ ủy quyền cuộc gọi đến hàng đợi. – abatishchev

+0

Độ bit của SQL Server và của assembly là gì? – abatishchev

Trả lời

2

Tôi có cùng vấn đề với bạn và tôi không biết liệu có giải pháp cho nó hay không. Những gì tôi đã tìm thấy là:

Có hai loại hội đồng .NET. Các hội đồng .NET thuần túy chỉ chứa các chỉ dẫn MSIL. Các hội đồng hỗn hợp chứa cả các hướng dẫn máy không được quản lý và các hướng dẫn MSIL. Các hội đồng hỗn hợp nói chung được biên dịch bằng trình biên dịch C++ với/clr switch nhưng chứa các lệnh máy kết quả từ mã C++ gốc.

Bất kể phiên bản nào của SQL Server, CREATE ASSEMBLY chỉ cho phép các assembly .NET tinh khiết được đăng ký. SQL Server luôn yêu cầu một assembly được nạp vào cơ sở dữ liệu SQL Server với CREATE ASSEMBLY chỉ chứa các lệnh MSIL (assembly thuần túy). CREATE ASSEMBLY sẽ tăng lỗi trên nếu một assembly được đăng ký là assembly hỗn hợp.

Từ http://blogs.msdn.com/b/psssql/archive/2013/02/23/unable-to-register-net-framework-assembly-not-in-the-supported-list.aspx

Vấn đề là chúng ta thực sự cần phải tham khảo System.ServiceModel.

Vì vậy, tôi đoán là, trong tương lai gần, không có khắc phục cho nó. Những gì chúng ta phải làm là viết theo một cách khác.

+1

Còn cách nào khác? Bạn đã tìm thấy giải pháp chưa? – sojim2

Các vấn đề liên quan