Lỗi PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE
thường xảy ra trong SQL Server khi bạn cố gắng triển khai một assembly với các quyền EXTERNAL_ACCESS hoặc UNSAFE, nhưng cấu hình máy chủ không cho phép điều này. Để khắc phục lỗi này, bạn có thể thực hiện các bước sau:
Bước 1: Bật CLR Enabled
- Mở SQL Server Management Studio (SSMS).
- Thực hiện truy vấn sau để bật CLR nếu nó chưa được bật:
sp_configure ‘clr enabled’, 1;
RECONFIGURE;
Bước 2: Đặt TRUSTWORTHY
cho cơ sở dữ liệu
Đặt thuộc tính TRUSTWORTHY của cơ sở dữ liệu chứa assembly thành ON. Lưu ý rằng điều này có thể ảnh hưởng đến bảo mật, vì vậy chỉ áp dụng với cơ sở dữ liệu tin cậy và người dùng có quyền truy cập phù hợp.
- Xác định cơ sở dữ liệu chứa assembly và thực hiện truy vấn sau:
ALTER DATABASE [YourDatabaseName] SET TRUSTWORTHY ON;
Bước 3: Gán quyền UNSAFE ASSEMBLY
cho sa
hoặc tài khoản SQL phù hợp
- Xác định tài khoản SQL đang sử dụng cho cơ sở dữ liệu và chạy truy vấn sau để gán quyền:
USE master;
GRANT UNSAFE ASSEMBLY TO [YourLogin];
Thông thường, [YourLogin]
có thể là tài khoản sa
hoặc tài khoản SQL có quyền truy cập phù hợp.
Bước 4: Đặt PERMISSION_SET
của assembly
Khi tạo assembly, bạn sẽ có thể thiết lập PERMISSION_SET
thành EXTERNAL_ACCESS
hoặc UNSAFE
nếu các thiết lập trên đã được áp dụng. Ví dụ:
CREATE ASSEMBLY [YourAssemblyName]
FROM ‘Path\To\YourAssembly.dll’
WITH PERMISSION_SET = UNSAFE;
Lưu ý quan trọng: Việc kích hoạtTRUSTWORTHY
và gán quyềnUNSAFE ASSEMBLY
có thể ảnh hưởng đến bảo mật. Nên áp dụng các bước này trên cơ sở dữ liệu và tài khoản mà bạn chắc chắn về độ an toàn và bảo mật của nó.