Создание сборки запрещено в AWS RDS (SQL Server).Есть ли обходной путь? - PullRequest
0 голосов
/ 31 мая 2019

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

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

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

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?

1 Ответ

0 голосов
/ 16 июля 2019

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

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

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

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

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

...