|
ストアドプロシージャを自分で作成する前に、その使い方を最初に勉強してみましょう。データベースシステム管理者saログインのパスワード設定を試します。
連載第1回目7節、第2回目1節で、saログインのパスワード設定方法について解説をしました。その方法はGUIシステム管理ツールを使ったもので、これからお話しするストアドプロシージャの方法ではありません。
MSDEやSQL Serverをインストールした直後では、saログインのパスワードは無設定のため非常に危険な状態です。データベースサーバーをインストールした直後に最初に行う仕事は、saログインにパスワードをセットしてください。
それでは、ストアドプロシージャを使った方法を解説しましょう。
皆さんは、Visual Basicプログラムの中からWindows-API関数と呼ばれるWindowsのシステム関数を呼び出したことがありますか?
Visual Basicプログラムの中で何か不自由さを感じた場合は、Windows-API関数を実行してその問題を解決することがあります。
データベースサーバーを使ったアプリケーション開発でも、これと似た場面がよく発生します。
今回のように
『ログインパスワードを変更する』
という場合では、Windows-API関数を呼び出すのと同じように、SQL
Server(MSDE)が提供しているシステム機能を直接呼び出してその問題を解決します。
Windows-API関数に相当するデータベースサーバーの機能が、『システムストアドプロシージャ』と呼ばれており、数多くの命令が存在します(図1から図3まで参照)。

図1 SQLServer/MSDEが提供するシステムストアドプロシージャの機能別分類

図2 システムストアドプロシージャの中のセキュリティプロシージャ
ログインパスワードを変更するsp_passwordが含まれる

図3 システムストアドプロシージャの中のシステムに分類されるプロシージャ
saログインのパスワードを変更する場合は、sp_passwordシステムストアドプロシージャを実行してください。
SQL ServerのBooks Onlineなどでsp_passwordシステムストアドプロシージャの使い方を調べると、図4のように、
sp_password '古いパスワード','新しいパスワード','ログイン名'
(注)Transact-SQL言語では、文字列はシングルクォーテーションで囲みます。 |
|
となります。

図4 sp_passwordシステムストアドプロシージャの使い方
インストールした直後のsaログインのパスワードを変更するときは、
| exec sp_password null , 'NewPassWord' , 'sa' |
|
を実行しましょう。
パスワードが無い状態(省略)は、null値を引数に与えます。また一般的にストアドプロシージャの名前の前にはexecute命令(execと省略可)を書いて下さい。
|