Tôi cần sử dụng DLL của bên thứ ba trong mã kích hoạt c # trong SQL Server CLR
Nhưng khi tôi cố gắng thêm tham chiếu thì nó chỉ hiển thị một số DLL từ SQL Server.
Làm cách nào tôi có thể thêm dll bên thứ ba vào SQL Server?
Tôi cần sử dụng DLL của bên thứ ba trong mã kích hoạt c # trong SQL Server CLR
Nhưng khi tôi cố gắng thêm tham chiếu thì nó chỉ hiển thị một số DLL từ SQL Server.
Làm cách nào tôi có thể thêm dll bên thứ ba vào SQL Server?
Câu trả lời:
Bạn chỉ có thể thêm các tham chiếu đến các hội đồng đã được đăng ký với Sql Server. Nếu chúng không được đăng ký, chúng sẽ không hiển thị trong hộp thoại Thêm tài liệu tham khảo.
Có một số bước bạn sẽ cần phải đăng ký DLL, trước tiên bạn sẽ cần cấu hình lại cơ sở dữ liệu của mình:
ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
sp_configure 'clr enabled', 1;
RECONFIGURE;
Một khi điều này được thực hiện, Sql Server được kích hoạt CLR. Tiếp theo, bạn sẽ cần phải đăng ký lắp ráp của bạn:
CREATE ASSEMBLY [MyAssembly] AUTHORIZATION [MyUser]
FROM 'C:\CLR\MyAssembly.dll'
WITH PERMISSION_SET = SAFE
Nếu tập lệnh cuối cùng này chạy chính xác, tập hợp hiện đã được đăng ký và sẽ xuất hiện trong hộp thoại Thêm tài liệu tham khảo.
Điều bạn sẽ cần xem xét là bảo mật ứng dụng của cấu hình Sql Server CLR của bạn:
SAFE
, chỉ trong trường hợp đặc biệt bạn nên sử dụng EXTERNAL_ACCESS
hoặc UNSAFE
.Assembly.Load()
bị hạn chế một cách có chủ đích.UNSAFE
.context connection = true;
) chạy trong ngữ cảnh của người dùng được kết nối, vì vậy bạn cần đảm bảo rằng bạn biết thư viện đó có quyền truy cập nào vào dữ liệu của bạn.Tôi giả sử bạn đang hỏi về các lựa chọn thay thế để cài đặt các cụm SQL CLR từ Visual Studio.
Có mã trong Visual Studio là không bắt buộc.
Triển khai các đối tượng cơ sở dữ liệu CLR trên MSDN chi tiết các tùy chọn, bao gồm các câu lệnh SQL và các tập lệnh triển khai.
Tôi sử dụng một DLL bên thứ 3 rất lớn lấy một trang web và chuyển đổi nó thành PDF.
PDF được lưu trên chia sẻ tệp và cơ sở dữ liệu được cập nhật theo vị trí và loại.
Đây là một quá trình gồm 3 bước:
Tạo một ứng dụng bảng điều khiển sử dụng DLL của bên thứ 3 để tạo PDF và chấp nhận URL và FilePath làm tham số và trả về kích thước PDF và số lượng trang.
Tạo thủ tục lưu sẵn CLR sau đó gọi ứng dụng bảng điều khiển trên máy chủ
Tôi gói tất cả vào một thủ tục được lưu trữ gọi ứng dụng CLR để tạo tệp PDF và sau đó tôi viết siêu dữ liệu về nó vào cơ sở dữ liệu.
Tôi nhận ra điều này không hoàn hảo và không có nghĩa là bạn nên làm bất cứ điều gì quá điên rồ bên trong cò súng!
Tôi chỉ đề cập ở đây cho những người khác có câu hỏi về việc sử dụng DLL của bên thứ 3 trong CLR của họ.
Hy vọng của tôi là bằng cách loại bỏ giao diện điều khiển cmd.exe để chạy DLL của bên thứ 3, thay vì chạy mọi thứ trong máy, nếu nó gặp sự cố, nó sẽ không ảnh hưởng xấu đến SQL Server. Đó là những gì tôi hi vọng.
Hãy bình luận nếu đây là một cách tiếp cận thực sự xấu và tại sao.