2010-05-06 47 views
22

sai khi khởi động lại máy chủ phát triển gần đây của chúng tôi SQL Server bắt đầu sử dụng .NET 4.0 cho SQLCLR. Điều này có nghĩa rằng không có gì sử dụng CLR trong SQL hoạt động, hoặc ít nhất đó là sự hiểu biết của tôi bằng cách đọc các nguồn:SQLCLR sử dụng phiên bản .NET Framework

http://software.intel.com/en-us/blogs/2009/10/16/sql-server-2008-sqlclr-net-framework-version/

www.sqlskills.com/BLOGS/BOBB/post/On-SQL-Server-and-NET-40.aspx

Tất cả chúng tôi nhận được thông báo lỗi kiểu này:

Msg 6517, Cấp 16, Tiểu bang 1, Dòng 1 Không thể tạo AppDomain "xxx.dbo [ddl] .3". Chữ ký loại của phương thức không tương thích với Interop.

Chạy báo cáo kết quả (theo đề nghị của @ john-Christensen)

select * from sys.dm_clr_properties 

kết quả trong các thông tin sau:

*Name*  *Value* 
directory C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 
version  v4.0.30319 
state  CLR is initialized 

Có ai biết làm thế nào để giải quyết này hoặc làm thế nào chúng ta có thể buộc SQL Server CLR để sử dụng một phiên bản trước của Framework?

Trả lời

12

Thông thường, bạn có thể buộc ứng dụng .NET sử dụng phiên bản Khuôn khổ .NET cụ thể bằng cách chỉ định thẻ supportedRuntime trong tệp cấu hình của ứng dụng.

Vì vậy, bạn có thể thử tạo một sqlservr.exe.config trong thư mục \Binn dưới đường dẫn gốc của cá thể SQL và chỉ định ở đó bạn muốn chỉ sử dụng phiên bản .NET lên đến 3.5. Kiểm tra this MSDN link để biết cấu trúc của tệp cấu hình.

1

Họ đã thực hiện các lựa chọn rõ ràng để đảm bảo rằng cài đặt .NET 4.0 sẽ không có tác động. Nó không nên sử dụng .NET 4.0 hoặc bất kỳ tệp mới nào ngoại trừ các tệp shim mới, mscoree.dll và mscoreei.dll. Những ứng dụng này phải tương thích ngược với thời gian chạy 2.0. Bạn có thể chạy Process Explorer để xem số phiên bản của dll được tải để xác minh rằng nó đang chạy đúng thời gian.

8

Từ bài viết và nghiên cứu của tôi trên web, có vẻ như điều ngược lại có thể xảy ra - bạn có khả năng đăng ký 4.0 DLL không? Có vẻ như SQL Server 2008 sẽ luôn tải 2.0 CLR và không phải là 4.0 CLR. Thử chạy tuyên bố này, nó sẽ cho bạn biết phiên bản máy chủ SQL của bạn đang chạy:

select * from sys.dm_clr_properties

+0

Khi tôi chạy select * from sys.dm_clr_properties tôi nhận được như sau: "thư mục: C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ phiên bản: v4.0.30319 nhà nước: CLR được khởi tạo" mà với tôi cho thấy rằng nó là v4.0 được sử dụng. –

+0

Tôi đã thêm câu trả lời cho câu lệnh đó vào câu hỏi chính. –

6

Trong bài viết của bạn tại Intel mà bạn tham khảo, nếu bạn đọc nó chặt chẽ, nó nói:

SQL server 2008 và sắp tới SQL server 2008 R2 phát hành, trước đây có tên mã là "Kilimanjaro", sẽ cả tiếp tục tải các phiên bản dịch vụ mới nhất của phiên bản 2.0 CLR.

Và sau này:

Trong khi các phiên bản tương lai của SQL Server có thể tải phiên bản mới hơn của CLR, hoặc thậm chí hỗ trợ tải nhiều CLR của trong quá trình này, phiên bản 2.0 của CLR là ở đây để ở lại cho SQLCLR trong SQL Server 2008 và SQL Server 2008 R2.

Tôi không biết cách bạn quản lý để có được thứ gì đó như .NET 4 được tải bên trong SQL Server 2008 R2 ....

14

Tôi gặp phải cùng một vấn đề gây phiền nhiễu. Không có công cụ Địa lý/Hình học nào trong cơ sở dữ liệu của tôi hoạt động. Đã cho tôi một số cài đặt lại unsuccesfull của SQL server để cuối cùng (một vài tuần sau!) Tìm chìa khóa sau trong registry của tôi đã được thiết lập để '1'

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ OnlyUseLatestCLR

khi tôi đặt lại thành '0' và khởi động lại máy, mọi thứ đã hoạt động trở lại!

Hans

0

Tôi có vấn đề này trong một ngày và sau khi cập nhật các cửa sổ của tôi và NET khuôn khổ vấn đề disappeared.the vấn đề liên quan đến khuôn khổ Net cố gắng sửa chữa nó.

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