SSMSのGUIにて変更できるものとばかり思っていたが、できない模様・・・ DBのユーザーをALTER USERにて変更すればよいだけ。これで該当するログインがマッピングされる。
use DBNAME ALTER USER [myname] with LOGIN = [myname]
一般にアドミンがユーザーのパスワードを変更するにはALTER LOGINだ。しかし、ここで管理者が介在せず、クライアント端末でADO.NETから接続し、パスワードを変更するケースの話をする。まずConnectionをインスタンス化し、T-SQLを実行するのだが、ユーザーの権限でALTER LOGINできないし、そもそも、もし、ログインの有効期限が切れていた場合、ログインすらさせてくれない。有効期限が切れていた場合に、新しくユーザーにパスワードを入力させる画面を出して、パスワードを変更するにはどうすればよいか。実は.Net Framework2.0より SqlConnection.ChangePasswordなる静的メソッドがあり、SQL Server 2005以上であればクライアント端末よりパスワードを変更させることができる。どういう仕組みでやっているのかはわからないが、接続文字列と変更後のパスワードを引数で渡すだけでいい。
SqlConnection.ChangePassword(connectionString, 'piyopiyo');
この後、引数の接続文字列内のパスワードは無効になるので、その辺は適当に後処理しとく必要あり。