Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблема при создании Assembly  [new]
Ceib
Member

Откуда:
Сообщений: 80
Доброго дня!

Возникла задача, которую не получается решить средствами T-SQL - набросал (впервые в жизни) CLR функцию и пытаюсь ее запихнуть в базу. В качестве базовой инструкции использую вот это это - отличие от моего случая одно единственное - PERMISSION_SET у меня SAFE.

Выполнил последовательность действий:
1.
use master
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'Некоторый пароль'  
    

2. Скомпилил DLL-ку, подписал.
3.
use master
GO
CREATE ASYMMETRIC KEY CLR_SP_Key
FROM EXECUTABLE FILE = 'D:\t\MyCLR.dll'
GO 


4.
use master
CREATE LOGIN CLR_SP_Login FROM ASYMMETRIC KEY CLR_SP_Key

use myBase
CREATE USER CLR_SP_user FOR LOGIN CLR_SP_Login


5.
use myBase
CREATE ASSEMBLY SQLCLR_REGEX  FROM 'D:\t\MyCLR.dll'
with permission_set=SAFE;  
go



На последнем шаге возникает ошибка, которую совсем не могу понять:

Msg 10343, Level 14, State 1, Line 20
CREATE or ALTER ASSEMBLY for assembly 'CLR_Regex_Functions' with the SAFE or EXTERNAL_ACCESS option failed because the 'clr strict security' option of sp_configure is set to 1. Microsoft recommends that you sign the assembly with a certificate or asymmetric key that has a corresponding login with UNSAFE ASSEMBLY permission. Alternatively, you can trust the assembly using sp_add_trusted_assembly.

Вроде все сделал по инструкции - подписал, пользователя создал, а не заводится. Подскажите, что упустил?
22 дек 17, 11:06    [21054611]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при создании Assembly  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Ceib,

автор
Enabled - Causes the Database Engine to ignore the PERMISSION_SET information on the assemblies, and always interpret them as UNSAFE. Enabled is the default value for SQL Server 2017.

или крестик снять (clr strict security = 0) или SAFE убрать
22 дек 17, 11:46    [21054757]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при создании Assembly  [new]
Ceib
Member

Откуда:
Сообщений: 80
TaPaK,

Сразу отказываться от clr strict security не хотелось бы без крайней необходимости - предполагаю, что дефолтные настройки должны быть предпочтительны в большинстве случаев, а полного понимания чего это коснется и где откликнется у меня нет.
Насчет SAFE - если имеется ввиду изменение PERMISSION_SET на UNSAFE/EXTERNAL_ACCESS, то попробовал - ничего не изменилось. Если имеется что то еще - не могли бы Вы пояснить?
22 дек 17, 11:56    [21054785]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при создании Assembly  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Ceib,

https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/clr-strict-security
22 дек 17, 11:58    [21054789]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при создании Assembly  [new]
ptr128
Member

Откуда: Moscow
Сообщений: 398
TaPaK
Ceib,

автор
Enabled - Causes the Database Engine to ignore the PERMISSION_SET information on the assemblies, and always interpret them as UNSAFE. Enabled is the default value for SQL Server 2017.

или крестик снять (clr strict security = 0) или SAFE убрать


Сильно зависит от версии SQL сервера. На 2017 - так как Вы сказали. На 2016-ом clr strict security могла быть включена -T 6545 в командной строке сервера. Иного способа включить ее на 2016-ом я не знаю.
22 дек 17, 12:07    [21054813]     Ответить | Цитировать Сообщить модератору
 Re: Проблема при создании Assembly  [new]
Ceib
Member

Откуда:
Сообщений: 80
ptr128,
SQL Server 2017, так что да, решение помогло.


TaPaK,
Благодарю, за ссылку. После прочтения понял, что под "убрать SAFE" имело ввиду "отказаться от SAFE в своем решении" - отказался, добавил права UNSAFE ASSEMBLY пользователю:

use master
grant UNSAFE ASSEMBLY to CLR_SP_Login


И заработало. Еще раз спасибо.
22 дек 17, 12:20    [21054844]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить