用户和数据库架构冲突

时间:2012-05-29 14:24:45

标签: sql-server sql-server-2008 database-schema username

我希望拥有一个具有相同名称的用户和数据库架构。执行以下脚本

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:数据库中已有一个名为“abc”的对象。

有没有办法在不使用不同名称的情况下处理这个问题?

1 个答案:

答案 0 :(得分: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
相关问题