|
Работа CLR после восстановления резервной копии
|
|||
---|---|---|---|
#18+
Есть боевой сервер под управлением MS SQL версии Microsoft SQL Server 2017 (RTM-CU20) (KB4541283) - 14.0.3294.2 (X64) Mar 13 2020 14:53:45 Copyright (C) 2017 Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor) В одной из баз есть CLR, которая работает с настройками Permission Set - Safe. После восстановления этой БД на предбоевом сервере БД эта CLR отказывается работать в режиме Safe. При установке PERMISSION_SET = UNSAFE все заводится. Версия предбоевого сервера: Microsoft SQL Server 2017 (RTM-CU15) (KB4498951) - 14.0.3162.1 (X64) May 15 2019 19:14:30 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) (Hypervisor) Вопрос в следующем. Как можно завести CLR с Permission Set - Safe после восстановления БД? Хотя бы куда покопать для решения? trustworthy на базе включен на обоих серверах. ошибка возникающая при работе в Safe после восстановления бэкапа такая: авторA .NET Framework error occurred during execution of user-defined routine or aggregate "SonicMQ::Receive(Internal)": System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. System.Security.SecurityException: at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(RuntimeAssembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandleInternal rmh, SecurityAction action, Object demand, IPermission permThatFailed) at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet grantedSet, PermissionSet refusedSet, CodeAccessPermission demand, PermissionToken permToken, RuntimeMethodHandleInternal rmh, Object assemblyOrString, SecurityAction action, Boolean throwException) at System.StubHelpers.StubHelpers.DemandPermission(IntPtr pNMD) at Microsoft.Win32.NativeMethods.GetCurrentProcessId() at System.Diagnostics.Process.GetCurrentProcess() at Sonic.Client.Sys.SysTrace..ctor(Int32 level) at Sonic.Client.Sys.SysObject..ctor(PackageConfig config) at Sonic.Client.Jms.IO.JIOConnection..ctor(String id, Hashtable properties) at Sonic.Client.Jms.Impl.Connection.computeRandomAndConnect(Int32[] factors, String[] brokers, Boolean enableRandomize, Hashtable connectionProperties) at Sonic.Client.Jms.Impl.Connection..ctor(String brokerURL, String connectID, String username, String password, String clientID, Hashtable environment) at Finam.SqlServer.SonicMQ.CreateConnection(SqlString connectionString) at Finam.SqlServer.SonicMQ.Receive(SqlString connectionString, SqlString queueName, SqlInt32 count, SqlString messageSelector, SqlInt64 timeOut) . ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 11:35 |
|
Работа CLR после восстановления резервной копии
|
|||
---|---|---|---|
#18+
SadJester После восстановления этой БД на предбоевом сервере БД эта CLR отказывается работать в режиме Safe. При установке PERMISSION_SET = UNSAFE все заводится. Попробуйте EXEC sp_changedbowner 'sa' на предбоевом сервере, ну или нужно устанавливать инстанс от того же пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 13:07 |
|
Работа CLR после восстановления резервной копии
|
|||
---|---|---|---|
#18+
SadJester Есть боевой сервер под управлением MS SQL версии Microsoft SQL Server 2017 (RTM-CU20) (KB4541283) - 14.0.3294.2 (X64) Mar 13 2020 14:53:45 Copyright (C) 2017 Microsoft Corporation Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor) В одной из баз есть CLR, которая работает с настройками Permission Set - Safe. После восстановления этой БД на предбоевом сервере БД эта CLR отказывается работать в режиме Safe. При установке PERMISSION_SET = UNSAFE все заводится. Версия предбоевого сервера: Microsoft SQL Server 2017 (RTM-CU15) (KB4498951) - 14.0.3162.1 (X64) May 15 2019 19:14:30 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) (Hypervisor) Вопрос в следующем. Как можно завести CLR с Permission Set - Safe после восстановления БД? Хотя бы куда покопать для решения? trustworthy на базе включен на обоих серверах. ошибка возникающая при работе в Safe после восстановления бэкапа такая: авторA .NET Framework error occurred during execution of user-defined routine or aggregate "SonicMQ::Receive(Internal)": System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.SecurityPermission, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. System.Security.SecurityException: at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(RuntimeAssembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandleInternal rmh, SecurityAction action, Object demand, IPermission permThatFailed) at System.Security.CodeAccessSecurityEngine.CheckHelper(PermissionSet grantedSet, PermissionSet refusedSet, CodeAccessPermission demand, PermissionToken permToken, RuntimeMethodHandleInternal rmh, Object assemblyOrString, SecurityAction action, Boolean throwException) at System.StubHelpers.StubHelpers.DemandPermission(IntPtr pNMD) at Microsoft.Win32.NativeMethods.GetCurrentProcessId() at System.Diagnostics.Process.GetCurrentProcess() at Sonic.Client.Sys.SysTrace..ctor(Int32 level) at Sonic.Client.Sys.SysObject..ctor(PackageConfig config) at Sonic.Client.Jms.IO.JIOConnection..ctor(String id, Hashtable properties) at Sonic.Client.Jms.Impl.Connection.computeRandomAndConnect(Int32[] factors, String[] brokers, Boolean enableRandomize, Hashtable connectionProperties) at Sonic.Client.Jms.Impl.Connection..ctor(String brokerURL, String connectID, String username, String password, String clientID, Hashtable environment) at Finam.SqlServer.SonicMQ.CreateConnection(SqlString connectionString) at Finam.SqlServer.SonicMQ.Receive(SqlString connectionString, SqlString queueName, SqlInt32 count, SqlString messageSelector, SqlInt64 timeOut) . Имхую: 1. trustworthy ON - совсем плохая практика, и, собственно, это используется, но это не требуется для SQLCLR 2. Зачем вам в данном случае SAFE? 3. Как написано выше - проверьте владельца, не помешает, но не исключено, что и не поможет. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 13:15 |
|
Работа CLR после восстановления резервной копии
|
|||
---|---|---|---|
#18+
SadJester, что-то вы темните, сборки, которые подключаются к серверу Finam.SqlServer.SonicMQ.CreateConnection(SqlString connectionString) не могут быть safe. Что можно сделать - это внесение сборки в список доверенных, кроме прочих вариантов предполагающих уровень доступа "небезопасный". ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2022, 21:49 |
|
Работа CLR после восстановления резервной копии
|
|||
---|---|---|---|
#18+
SadJester, Может у Вас external_access? Тогда почитайте тут . Я делаю восстановление для сборок с external_access как то так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2022, 01:12 |
|
|
Start [/forum/topic.php?fid=46&fpage=2&tid=1683838]: |
0ms |
get settings: |
25ms |
get forum list: |
10ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
74ms |
get topic data: |
23ms |
get forum data: |
5ms |
get page messages: |
536ms |
get tp. blocked users: |
3ms |
others: | 151ms |
total: | 841ms |
0 / 0 |