Как добавить участника роли для существующей базы данных

Я хочу добавить члена роли в мои базы данных динамически с помощью запроса ниже:

use MyExistingDatabase
GO
EXEC sp_addrolemember @rolename = 'db_owner', @membername = 'A38'
GO 
execute as user='A38'
GO
CREATE TABLE [A38].[ABC] ( 
[Id]             int              IDENTITY(1,1)   NOT NULL,
[Name]  nvarchar(100)                             NULL,

Вот A38 мое имя пользователя в MyExistingDatabase и хочет выполнить дальнейший скрипт со схемой по умолчанию A38, Приведенный выше скрипт работает нормально в случае, если я создаю новую базу данных, но если я использую любую существующую базу данных, он выдает следующую ошибку:

Пользователь не имеет разрешения на выполнение этого действия

В базе данных MyExistingDatabase отказано в разрешении CREATE TABLE

Пожалуйста, предложите

1 ответ

Вы создаете таблицу со схемой A38, поэтому вам нужно убедиться, что схема существует, например:

use MyExistingDatabase
GO
EXEC sp_addrolemember 'db_owner', 'A38'
GO 
CREATE SCHEMA A38 AUTHORIZATION A38
GO 
CREATE TABLE [A38].[ABC] ( 
[Id]             int              IDENTITY(1,1)   NOT NULL,
[Name]  nvarchar(100)                             NULL)

В противном случае см. Эту ссылку для альтернативного метода.

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