データベース初期化スクリプト (SQL Server)

SQL Server 上でデータベースを作成し、ログインを作成し、データベースのユーザーを作成するための一連の Transact-SQL について記述します。
テーブルやインデックスの作成などについては触れません。
SQL Server 認証と Windows 認証では若干異なるので、分割して記述します。
 
■ SQL Server 認証のユーザーを作成する場合
Database1 データベースを作成し、user1 ログインおよび user1 ユーザーを作成するには、以下のようなスクリプトを実行します。

use [master]
go
 
if exists (select name from sys.databases where name = N'Database1')
drop database [Database1]
go
 
create database [Database1]
go
 
if exists (select name from sys.server_principals where name = N'user1')
drop login [user1]
go
 
create login [user1] with password = N'P@ssw0rd', default_database = [Database1]
go
 
use [Database1]
go
 
create user [user1]
go
 
exec sp_addrolemember N'db_owner', N'user1'
go

 
注意点
(1) 同じ名前のデータベースが既に存在するかどうかを調べるには、次のように db_id を使用してもかまいません。
if db_id(N'Database1') is not null
drop database [Database1]
go
(2) exists の逆の判定をするには、次のように is null を使用します。
if (select name from sys.databases where name = N'Database1') is null
(3) 照合順序の指定を省略した場合、日本語版では Japanese_CI_AS が設定されます。
     明示的に指定するには、次のように collate を使用します。
create database [Database1] collate Japanese_CI_AS
go
(4) ユーザーを削除するには次のようにします。
     (今回の場合は、同じ名前のユーザーが既に存在していたとしてもデータベース自体を再作成しているので不要です。)
if exists (select name from sys.database_principals where name = N'user1')
drop user [user1]
go
(5) ログイン名とユーザー名が同じであれば、ユーザーを作成するときに for login を省略できます。
     明示的に指定するには次のようにします。
create user [user1] for login [user1]
go
 
■ Windows 認証のユーザーを作成する場合
Database1 データベースを作成し、XYZPC\ASPNET ログインおよび XYZPC\ASPNET ユーザーを作成するには、
以下のようなスクリプトを実行します。

use [master]
go
 
if exists (select name from sys.databases where name = N'Database1')
drop database [Database1]
go
 
create database [Database1]
go
 
if exists (select name from sys.server_principals where name = N'XYZPC\ASPNET')
drop login [XYZPC\ASPNET]
go
 
create login [XYZPC\ASPNET] from windows with default_database = [master]
go
 
use [Database1]
go
 
create user [XYZPC\ASPNET]
go
 
exec sp_addrolemember N'db_owner', N'XYZPC\ASPNET'
go

 
バージョン情報
SQL Server 2005, 2008, 2008 R2
 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。