DBユーザーのログインのマッピングを変更する

SSMSのGUIにて変更できるものとばかり思っていたが、できない模様・・・ DBのユーザーをALTER USERにて変更すればよいだけ。これで該当するログインがマッピングされる。

use DBNAME
ALTER USER [myname] with LOGIN = [myname]

ADO.NETから非管理者ユーザーがSQLServer認証ログインのパスワードを変更する

一般にアドミンがユーザーのパスワードを変更するにはALTER LOGINだ。しかし、ここで管理者が介在せず、クライアント端末でADO.NETから接続し、パスワードを変更するケースの話をする。まずConnectionをインスタンス化し、T-SQLを実行するのだが、ユーザーの権限でALTER LOGINできないし、そもそも、もし、ログインの有効期限が切れていた場合、ログインすらさせてくれない。有効期限が切れていた場合に、新しくユーザーにパスワードを入力させる画面を出して、パスワードを変更するにはどうすればよいか。実は.Net Framework2.0より SqlConnection.ChangePasswordなる静的メソッドがあり、SQL Server 2005以上であればクライアント端末よりパスワードを変更させることができる。どういう仕組みでやっているのかはわからないが、接続文字列と変更後のパスワードを引数で渡すだけでいい。

SqlConnection.ChangePassword(connectionString, 'piyopiyo');

この後、引数の接続文字列内のパスワードは無効になるので、その辺は適当に後処理しとく必要あり。


CategorySQLServer


|New|Edit|Freeze|Diff|History|Attach|Copy|Rename|
Last-modified: 2009-11-15 (Sun) 00:56:39
HTML convert time: 0.006 sec.