如何为现有数据库添加角色成员

时间:2014-04-23 06:37:21

标签: sql sql-server-2008 stored-procedures sqlroleprovider

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

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,

此处A38MyExistingDatabase中的用户名,并希望使用默认架构A38执行其他脚本。上面的脚本工作正常,如果我创建一个新数据库,但如果我使用我的任何现有数据库,它会抛出以下错误:

  

用户无权执行此操作

     

数据库'MyExistingDatabase'

中的CREATE TABLE权限被拒绝

请建议

1 个答案:

答案 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以获取其他方法。