/ /ユーザーとDBスキーマの競合 - sql-server、sql-server-2008、データベーススキーマ、ユーザー名

ユーザーとDBのスキーマの競合 - SQL Server、SQL Server 2008、データベーススキーマ、ユーザー名

ユーザーとDBスキーマを同じ名前にしたいです。下記のスクリプトを実行する

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

私にエラーを与える:

メッセージ2714:データベースには既に 'abc'という名前のオブジェクトがあります。

別の名前を使わずにこれを処理する方法はありますか?

回答:

回答№1は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