Создание сборки запрещено в AWS RDS (SQL Server). Есть ли обходной путь?

Я хочу скопировать базу данных с помощью скрипта сборки в RDS. В одной хранимой процедуре есть команда создания сборки. Я не могу создать эту процедуру, потому что она говорит: «Отказано в доступе». Я администратор, но у меня нет прав sys_admin, так как это невозможно в RDS.

Я создал экземпляр AWS-RDS с версией SQL Server Enterprise. Я подключился из своей локальной MS SQL Management Studio. Я запускаю сценарий создания процедуры.

Это похоже на сценарий, который я запускал.

USE [master]
GO
CREATE DATABASE [xxx]
GO
ALTER DATABASE [xxx] SET COMPATIBILITY_LEVEL = 130
GO
IF (1 = FULLTEXTSERVICEPROPERTY('IsFullTextInstalled'))
begin
EXEC [xxx].[dbo].[sp_fulltext_database] @action = 'enable'
end
GO


CREATE ASSEMBLY [xxx_clr]
FROM 0x4...
WITH PERMISSION_SET = SAFE
GO
-- error will appear here !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

CREATE PROCEDURE [pm].[xxx_SP]
    @srcTblName [nvarchar](4000),
    etc..
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [xxx_clr].[xxxCLR].[xxxMain]
GO

Есть ли способ сделать обходной путь для создания сборки на RDS?

Опубликованный вами сценарий попытается создать сборку в базе данных master. Вы пытались добавить оператор USE для своей базы данных пользователей?

Dan Guzman 31.05.2019 12:16

Разрешает ли Amazon RDS SQLCLR вообще? Даже Azure SQL не позволяет этого

Panagiotis Kanavos 31.05.2019 12:17

Доко говорит нет. Там действительно не так много больше. docs.aws.amazon.com/AmazonRDS/latest/UserGuide/… Действительно ли необходимо делать в сборке все, что нужно? Если сложно (требуются другие сборки, общение с внешними сервисами), то все равно не получится. Если это не сложно, вы можете просто построить его в SQL

Nick.McDermaid 31.05.2019 12:20

Я попытался создать сборку на пользовательской базе данных. Я получил следующую ошибку: Msg 10343, уровень 14, состояние 1, строка 415 CREATE или ALTER ASSEMBLY для сборки «function_xxxx_clr» с параметром SAFE или EXTERNAL_ACCESS не удалось, поскольку для параметра sp_configure «clr strict security» установлено значение 1. Microsoft рекомендует что вы подписываете сборку сертификатом или асимметричным ключом, имеющим соответствующий логин с разрешением UNSAFE ASSEMBLY. Кроме того, вы можете доверять сборке, используя хранимую процедуру sp_add_trusted_assembly.

Jsimp 31.05.2019 13:42

К сожалению, необходимо создать сборку. Действия, предложенные в сообщении об ошибке, выполнить невозможно, так как у меня нет прав sys_admin.

Jsimp 31.05.2019 13:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
1 046
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Инструкции CREATE ASSEMBLY больше невозможны в RDS, начиная с SQL Server 2017, поскольку значение группы параметров clr strict security DB по умолчанию равно 0 и не может быть переопределено. Внесение сборки в белый список с использованием sp_add_trusted_assembly также невозможно, поскольку для выполнения инструкции необходимы права системного администратора.

Единственным другим подходом к достижению этого в AWS было бы

(1) Создайте экземпляр SQL Server на EC2, чтобы предоставить пользователю БД неограниченные привилегии.

(2) Попытаться использовать экземпляр RDS SQL Server более ранней версии, чем версия 2017. Возможно, вам потребуется подписать сборку.

В этом сообщение подробно описаны некоторые последствия обновлений параметров clr strict security в SQL Server 2017.

(2) было решением. Подписывать сборку не нужно. Включите CLR, и он отлично работает.

Jsimp 22.07.2019 14:34

Другие вопросы по теме