我希望借助以下查询动态地将角色成员添加到我的数据库中:
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权限被拒绝
请建议
答案 0 :(得分:0)
您正在使用名为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)
否则请参阅此link以获取其他方法。