CREATE USER (Transact-SQL)

現在のデータベースにユーザーを追加します。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

CREATE USER user_name 
    [ { { FOR | FROM }
      { 
        LOGIN login_name 
        | CERTIFICATE cert_name 
        | ASYMMETRIC KEY asym_key_name
      } 
      | WITHOUT LOGIN
    ] 
    [ WITH DEFAULT_SCHEMA = schema_name ]

引数

  • user_name
    データベース内でユーザーを識別する名前を指定します。user_name のデータ型は sysname です。半角 128 文字まで指定できます。
  • LOGIN login_name
    作成されるデータベース ユーザーの SQL Server ログインを指定します。login_name は、サーバー内で有効なログインにする必要があります。この SQL Server ログインをデータベースに対して入力すると、データベースでは、作成されたデータベース ユーザーの名前と ID が取得されます。
  • CERTIFICATE cert_name
    作成されるデータベース ユーザーの証明書を指定します。
  • ASYMMETRIC KEY asym_key_name
    作成されるデータベース ユーザーの非対称キーを指定します。
  • WITH DEFAULT_SCHEMA **=**schema_name
    このデータベース ユーザー用のオブジェクトの名前を解決するときに、サーバーで最初に検索されるスキーマを指定します。
  • WITHOUT LOGIN
    ユーザーを既存のログインにマップしません。

解説

FOR LOGIN を省略した場合、新しいデータベース ユーザーは同じユーザー名を持つ SQL Server ログインにマップされます。

DEFAULT_SCHEMA が定義されていない場合、データベース ユーザーには既定のスキーマ dbo が使用されます。DEFAULT_SCHEMA には、データベースに現在存在しないスキーマも設定できます。DEFAULT_SCHEMA は、このオプションが指すスキーマが作成されていなくても設定できます。DEFAULT_SCHEMA は、Windows グループ、証明書、または非対称キーにマップされるユーザーを作成する場合には指定できません。

ms173463.note(ja-jp,SQL.90).gif重要 :
ユーザーが固定サーバー ロール sysadmin のメンバである場合、DEFAULT_SCHEMA の値は無視されます。固定サーバー ロール sysadmin のすべてのメンバには、dbo の既定のスキーマが割り当てられます。

WITHOUT LOGIN 句でユーザーを作成する場合、ユーザーは SQL Server ログインにマップされず、他のデータベースには guest として接続できます。

SQL Server ログイン、証明書、非対称キーにマップされるユーザーの名前には、円記号 (\) を使用できません。

guest ユーザーは各データベース内に既に存在しているため、CREATE USER を使用して guest ユーザーを作成することはできません。guest ユーザーは、次のように CONNECT 権限を与えることで有効にできます。

GRANT CONNECT TO guest;
GO

データベース ユーザーに関する情報は、sys.database_principals (Transact-SQL) カタログ ビューで確認できます。

ms173463.Caution(ja-jp,SQL.90).gif注意 :
SQL Server 2005 でのスキーマの動作は、以前のバージョンの SQL Server から変更されました。コードで、スキーマがデータベース ユーザーと同じであることが前提となっている場合、正しい結果が返されない場合があります。CREATE SCHEMA、ALTER SCHEMA、DROP SCHEMA、CREATE USER、ALTER USER、DROP USER、CREATE ROLE、ALTER ROLE、DROP ROLE、CREATE APPROLE、ALTER APPROLE、DROP APPROLE、ALTER AUTHORIZATION のいずれかの DDL ステートメントが使用されたことのあるデータベースでは、sysobjects を含む以前のカタログ ビューを使用しないでください。このようなデータベースでは、新しいカタログ ビューを使用する必要があります。新しいカタログ ビューでは、SQL Server 2005 で導入されたプリンシパルとスキーマの分離が考慮されます。カタログ ビューの詳細については、「カタログ ビュー (Transact-SQL)」を参照してください。

権限

データベースに対する ALTER ANY USER 権限が必要です。

A. データベース ユーザーを作成する

次の例では、まず AbolrousHazem というサーバー ログインをパスワード付きで作成し、次に対応するデータベース ユーザー AbolrousHazemAdventureWorks に作成します。

CREATE LOGIN AbolrousHazem 
    WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO 

B. 既定のスキーマでデータベース ユーザーを作成する

次の例では、まず WanidaBenshoof というサーバー ログインをパスワード付きで作成し、次に対応するデータベース ユーザー Wanida を既定のスキーマ Marketing で作成します。

CREATE LOGIN WanidaBenshoof 
    WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks;
CREATE USER Wanida FOR LOGIN WanidaBenshoof 
    WITH DEFAULT_SCHEMA = Marketing;
GO

C. 証明書からデータベース ユーザーを作成する

次の例では、証明書 CarnationProduction50 からデータベース ユーザー JinghaoLiu を作成します。

USE AdventureWorks;
CREATE CERTIFICATE CarnationProduction50
    WITH SUBJECT = 'Carnation Production Facility Supervisors',
    EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO 

参照

関連項目

sys.database_principals (Transact-SQL)
ALTER USER (Transact-SQL)
DROP USER (Transact-SQL)
CREATE LOGIN (Transact-SQL)
EVENTDATA (Transact-SQL)

その他の技術情報

ユーザーとスキーマの分離

ヘルプおよび情報

SQL Server 2005 の参考資料の入手