先日、職場でMSDE2000(SQL Server2005ExpressEditionとほぼ同等?)のインストールをした後、DB作成やSQLを実行した際に、
「ユーザー 'sa' のログインに失敗しました。理由 : SQL Server の信頼関係接続に関連付けられていません。」
というエラーが出たため、対処したときのメモです。
そもそもこのエラーは、Windowsネットワークがワークグループで構成されており、さらにWindows認証モードでSQLサーバが実行している状態で出てしまったわけです。。。
じゃぁSQLの動いているWindowsマシン上に、saっていうユーザアカウントを作って、それで認証すればいいんでないの?ってことで、やってみたんですが、うまくいきませーん。
Windowsってやっぱり苦手だ〜〜〜(泪
ということで、MSサポートのKB322336によると、SQLサーバの設定で以下の様な認証モードがあるようです。
1…Windows統合認証モード(Windowsに頼るので安全らしい)2…Windowsのほか、SQLサーバ自身でアカウントを管理する方法(セキュリティ的には少し甘くなる)
ということで、現在1のものを2に切り替えます。。
以下手順。
統合 (Windows) 認証から混合モードからに切り替えるには、以下の手順を実行します。
1. MSSQLSERVER および他の関連するすべてのサービス (SQLSERVERAgent など) を停止します。これを行うには、コントロール パネルの [管理ツール] にある [サービス] を開きます。
2. レジストリ エディタを起動します。レジストリ エディタを起動するには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックし、regedt32 と入力します。[OK] をクリックします。
3. 以下のサブキーのいずれかを検索します (MSDE を MSDE の既定のインスタンスとしてインストールしたか、または名前付きインスタンスとしてインストールしたかによって異なります)。
HKEY_LOCAL_MACHINE\Software\Microsoft\MSSqlserver\MSSqlServer
または
HKEY_LOCAL_MACHINE\Software\Microsoft\Microsoft SQL Server\\MSSQLServer\
4. 右ウィンドウで、LoginMode サブキーをダブルクリックします。
5. [DWORD エディタ] ダイアログ ボックスで、このサブキーの値を 2 に設定します。[16 進数] が選択されていることを確認して、[OK] をクリックします。
6. この変更を有効にするために、MSSQLSERVER サービスおよび SQLSERVERAgent サービスを再開します。
念のため、MSDEのsaパスワードはきちんと設定しておきます。
以下、コマンドプロンプトより実行します。
osql -E
1> sp_password @old = null, @new = 'newpassword', @loginame ='sa'
2> go
パスワードは変更されました。
余談ですが、FreeBSDやLinuxでよく動かすPostgreSQLはpsqlコマンドだったりするので、
雰囲気は似てますが、使い勝手はMS仕様です。。。
osqlって初めて使った…。
こんな感じで、MSDEを使ったDBの作成が無難に行えるようになったわけでした。

コメントする