2015年10月26日月曜日

SQL Serverのログイン名とユーザー名

OracleばっかりやっててSQL Serverのログインでハマったので、
SQL Serverのログイン名とユーザー名について記述。

・ユーザー名とログイン名は違う
・ログインはインスタンス単位でユニーク
・ログインはログインするためだけのもの
・ログインはインスタンスへのアクセス権限を保持
・ユーザーはデータベース単位でユニーク
・ユーザーはログインと関連付ける(ALER LOGIN)
・ユーザーはデータベースへのアクセス権限を保持

なので、ログインとユーザーの関連は1対Nとなる。
と思ったけど、1対Nになるのは、ユーザーが同じ名称で複数のデータベースに存在する場合。

1つのデータベースに同じログインのユーザーは作成できない。

ログインはSIDでユーザーと関連付けされるため
別インスタンスで同じログインとユーザーで
関連付けていたものを、データベースの復旧等で
別インスタンスに復旧した場合は
ログインとユーザーの関連は外れるので、ALTER LOGINで関連付ける必要がある。