会社で使用しているSMILE BS販売という請求書をだすソフトが急に起動できなくなりました。
何度再起動してもだめで、昨日までは使えていたのに・・・・
そこで色々調べて対策を講じていましたら無事起動できましたので、その方法を記録しておきます。
SMILE BSが起動できない
SMILE BSを起動しようとすると最初のロゴ画面は出るのですが、その後エラーとなり起動ができませんでした。
そこでSQL serverがうまく動いていないということでしたので、そこを調べてみました。
その為には「SQL server configuration manager」というソフトを起動しないといけません。
スタートメニューにはこのソフトが出てこないのでエクスプローラーで探さないといけません。
ソフトがある場所はこちらです。
こちらを起動すると、
こういう画面が出ます。
エラーが出ているときの画面を撮影忘れていましたので、修正後の画面になります。
SQL server(SMILE BS)が【停止】のままで開始してもエラーが出てだめでした。
System.Data.SqlClient.SqlException: SQL Server への接続を確立しているときにネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。
ウィンドウズのイベントログで確認をすると、
セキュリティライブラリの問題により、サーバーの暗号化を初期化できませんでした。セキュリティライブラリが存在しない可能性があります。security.dllがシステムに存在することを確認してください。
とあり、また、
エラー 0x139f、状態コード 0x80 で、TDSSNIClient の初期化に失敗しました。理由:SSLサポートを初期化できません。グループまたはリソースは要求した操作を実行するのに適切な状態ではありません。
となっていました。
SSL暗号がうまく処理できていない為にSQL serverが開始できないようです。
security.dllが消失していたらどうしよう・・・と考えていたらレジストリの調整でうまくいくかもしれないことがわかりました。
↑結果的にレジストリを修正することで上手くいきました!
改善方法
改善方法はこちらを参考にしました。
記事に基づいて以下のキーを確認しました
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
TLS のキーがありませんでした。これは、サーバーで TLS が有効になっていないことを意味します。SQL サービスを開始するには、TLS1.0 または SSL3.0 のいずれかを有効にする必要があります。
Windows レジストリ エディター バージョン 5.00
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0]
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client] 「有効」=dword:ffffffff
「DisabledByDefault」=dword:00000000[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server] 「有効」=dword:ffffffff
「DisabledByDefault」=dword:00000000キーを作成したら、SQL サービスを開始できます。
引用:https://blog.sqlauthority.com/2017/03/14/sql-server-errorlog-server-unable-initialize-encryption-problem-security-library/
(Google翻訳)
英語のサイトですのでGoogle翻訳で読んでなんとかなりました。
ということでこれからは自己責任でお願いします。
レジストリキーというところをいじりますので最悪の場合SMILE BSだけじゃなく他のアプリも動かなくなる可能性があります。
サーバーを立てて数台のPCでSMILE BSを使用しているわけではないのでこちらの改善方法(少々力技)を取りました。
支店や数台のPCで使用している場合は個人で改善をするのではなく、必ずシステム管理者がいますので、その方に問い合わせするようにしてください。
また、システムの保守契約を結んでいるのであれば、システムを導入した際にサポートの連絡先をもらっているはずですので、そちらに問い合わせて見てください。
あくまで急いで使えるようにしないと駄目な場合の応急処置といいますか、自己責任にて参考にしてください。
普通にパソコンを使用している場合はこれからいじるレジストリキーというものを触ることはないです。
私もイチかバチかでやってました(笑)
レジストリキーを修正します。
まずはレジストリエディタを起動します。
スタートメニューの検索窓に【regedit】と入力しますとレジストリーエディタが表示されます。
Windows10ですとスタートメニューの脇に虫眼鏡マークのアイコンがありますのでそちらをクリックすると検索できるようになります。
そちらに【regedit】と入力しますと「レジストリーエディタ」が開始できます。
調整するところを間違うとPCの調子が悪くなったり、アプリが起動しなくなったりと気をつけないと行けないアプリですので、起動時には本当に起動するのか聞かれます。
「はい」を選んで起動しますとこのようなシンプルな画面が出てきますよ。
ここから、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client] 「有効」=dword:ffffffff
「DisabledByDefault」=dword:00000000
を探していきます。
「¥」マークのところで区切って見ていきますよ。
↓
SYSTEM
↓
CurrentControlSet
↓
Control
↓
SecurityProviders
↓
SCHANNEL
↓
Protocols
↓
TLS 1.0
↓
Client
と同じ名前の所の左側の「+」もしくは「>」をクリックして展開していきます。
最後のClientには「+」も「>」もついていませんので、Clientをクリックすると右の部分に表示が出てきます。
上の画像はSSL3.0のClientをクリックした状態ですが、TLS1.0のClientをクリックしても右の表示は同じようなものです。
この中の
【Disabled By Default】のデータの部分が「0x00000001(1)」
【Enable】のデータの部分が「0x00000000(0)」
とはじめはなっていました。
Enableが有効ですからこちらが1になれば良いと言うことでしたので、【Disabled By Default】を右クリックして「修正」を選ぶと、
この画面が出てきますので、値のデータを「0」に変更します。
同じく【Enable】の方も開いて、値のデータを「1」に変更します。
TLS1.0の方を【Enable】にすれば大丈夫とは思いましたが、念のためSSL3.0の方も同じように変更します。
その後レジストリエディタを閉じて、PCを再起動します。
再起動後PCが落ち着いたらSMILE BS販売を起動してみます。
無事起動できました!!
まとめ
なぜ急にSMILE BS販売が起動しなくなったかはわかりません。
ソフトの閉じ方が悪かったのか、PCのシャットダウンを処理中に行ってしまったのか??
なぜかはわかりませんが、TLS1.0かSSL3.0がDisabledになってしまい、SSLの初期化ができないためにSQL serverが開始できなくなっていました。
今回はダメ元で試しましたが上手く行ってくれて良かったです。
今のところ問題なくPCもSMILE BS販売も使用できています。
このまま使えていければ良いです。