0

我想借助以下查询动态地将角色成员添加到我的数据库中:

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 权限被拒绝

请建议

4

1 回答 1

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)

否则,请参阅此链接以获取替代方法。

于 2014-04-23T07:25:26.273 回答