2012-05-29 45 views
0

我想要一个具有相同名称的用户和数据库模式。执行下面的脚本用户和数据库模式冲突

CREATE DATABASE db1 
GO 
EXECUTE sp_addlogin @loginame = 'abc', 
        @passwd = '123456789', 
        @defdb = 'db1' 
GO 
USE db1 
GO 
EXECUTE sp_grantdbaccess @loginame = 'abc', 
         @name_in_db = 'abc' 
GO 
CREATE SCHEMA abc 
GO 

给我的错误:

Msg 2714: There is already an object named ‘abc’ in the database.

有什么办法来处理这不使用不同的名字?

回答

2

我建议不要使用sp_过程,并且在数据库中将用户添加为数据库之前,我不会将数据库设置为默认值。

CREATE DATABASE db1; 
GO 
CREATE LOGIN abc WITH PASSWORD = '123456789'; 
GO 
USE db1; 
GO 
CREATE USER abc FROM LOGIN abc; 
GO 
ALTER LOGIN abc WITH DEFAULT_DATABASE = db1; 
GO 
CREATE SCHEMA abc; 
GO 

-- if you want them to own the schema: 
ALTER AUTHORIZATION ON schema::abc TO abc; 

-- if you just want abc to be their default schema: 
ALTER USER abc WITH DEFAULT_SCHEMA = abc; 
GO