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

Sql 如何为现有数据库添加角色成员,sql,sql-server-2008,stored-procedures,sqlroleprovider,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] nvarcha

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

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”中的创建表权限被拒绝


请建议您使用名为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)
否则,请参见此以获取替代方法