SQLServerの基本事項メモ

今までアプリケーションのデータソースとして何気なく使っていて、デバッグ時は問題ないが、
本番環境への配置やリモートからの接続が発生した途端にエラーが発生し困ったことが多々ある。
とりあえず動くようにという感じで場当たり的な対応で乗り切っていたが、何で動くようになったかまでの深い理解は得ていない。
そこで、ここいらでちゃんと基本から学習しておかないとと思い立ったわけです。
以下に、まとめておきます。

認証モード

Windows認証
OSの認証機能が使用される。可能な限りこちらを使うことがセキュリティ的に望ましい。
非Windows環境が混在している場合にはSQLServer認証を使用するしかない。
SQLServer認証
SQLServerにユーザー名、パスワードを渡してSQLServerで認証する方式。
混合モード
Windows認証、SQLServer認証ともに使用する。 下位互換のために存在している。

システムデータベース

SQLServerが使用するデータベース
システムデータベースとしてmaster、msdb、model、tempdb が存在する。
このうちmasterデータベースはシステム情報(ユーザー情報など)を保存する。
そのほかについては、システム データベース を参照。

ユーザーインスタンス

ユーザーインスタンスとは?
Windowsユーザー毎に独立したSQLServerの使用を可能とする仕組み。SQLServer2005から追加された。
インスタンス(デフォルトでは./sqlexpress)からデータベースをコピーし、指定した*.mdfへインポートしてそれを使用するイメージ。
通信は名前付パイプのみで、リモート接続は不可。

以降のSQLServerではこの機能が廃止される予定とのこと。
そして、これからはSQLServerCompactを使用する方向に変わっていくと思われる。
システムデータベースのコピー

各ユーザーに対して最初にユーザー インスタンスが生成された時点で、そのユーザー インスタンスによって排他的に使用されるユーザーの
ローカル アプリケーション データ リポジトリ ディレクトリの下位パスに、Template Data フォルダーからシステム データベース master および msdb がコピーされます。
通常、このパスは C:\Documents and Settings\\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS です。
ユーザー インスタンスが開始されると、tempdb、ログ、およびトレース ファイルもこのディレクトリに書き込まれます。
ユーザー インスタンスには、ユーザーごとに一意の名前が生成されます。

SQL Server Express ユーザー インスタンス

※実行ユーザーがこのフォルダに対する適切なアクセス権限がないとエラーが発生するので注意すること。

接続文字列
ユーザーインスタンスを使用する場合は下記のような感じ。
Data Source=.\\SQLExpress;Integrated Security=true;
User Instance=true;
AttachDBFilename=|DataDirectory|\app_data\Northwind.mdf;
Initial Catalog=Northwind;
一部解説すると、DataSourceには親インスタンス名を指定。UserInstanceをtrueにしてユーザーインスタンスを有効化している。
AttachDBFilenameへ独立して使用するデータベースファイルパスを指定する。

シノニム

テーブル名などの別名。

スキーマ

テーブルやプロシージャーなどを格納するコンテナ。データベースはスキーマーを格納し、サーバーはデータベースを格納している。
データベース毎に存在している。ユーザー、ロールにに所有される。
所有者ごとのアクセス権限を設定することができる。(更新、削除、参照、、、)

ユーザー

ログイン時にマップされる情報。データベース毎に存在している。
スキーマーを所有することができる。ロールに属することができる。これらは複数設定することが可能。

ロール

ユーザーグループのようなもの。スキーマーを所有することができる。

ログイン時のユーザーマッピング

認証(Winsows、SQLServer)毎データベース毎に割り当てるユーザー、スキーマーを設定する。
(ユーザーとスキーマーは多対多の関係なので、どのスキーマーをするか明示的に指定する必要がある。)
SQL Server ログインを作成する方法


あとはこの書籍を購入して勉強してみようと思ってます。

SQL Server 2008の教科書―基礎から実践まで学べる

SQL Server 2008の教科書―基礎から実践まで学べる