今まで、次のコードでVB.netでSQL serverを開始、停止することができていたのに、なぜかできなくなってしまいました。
SQL serverを開始
Shell("cmd.exe /C ""NET START MSSQL$SQLExpress", AppWinStyle.Hide)
Shell("cmd.exe /C ""NET START MSSQL$SQLExpress", AppWinStyle.Hide)
SQL serverを停止
Shell("cmd.exe /C ""NET STOP MSSQL$SQLExpress", AppWinStyle.Hide)
Shell("cmd.exe /C ""NET STOP MSSQL$SQLExpress", AppWinStyle.Hide)
こんなときの対処法に関して考えてみました。
スポンサーリンク
まずは、状況を確認するために、コマンドプロンプトで試して見ました。
次のサービスは SQL Server (SQLEXPRESS) サービスに依存しています。
SQL Server (SQLEXPRESS) サービスを停止すると、これらのサービスも停止されます。SQL Server Launchpad (SQLEXPRESS)
SQL Server (SQLEXPRESS) サービスを停止すると、これらのサービスも停止されます。SQL Server Launchpad (SQLEXPRESS)
この操作を続行しますか? (Y/N) [N]:
と表示されました。
ここで止まっているということですね。
Yを自動で入力できれば、先に進むことができます。
コマンドの最後に「/y」を付け加えれば良いです。
SQL serverを開始
Shell("cmd.exe /C ""NET START MSSQL$SQLExpress /y", AppWinStyle.Hide)
Shell("cmd.exe /C ""NET START MSSQL$SQLExpress /y", AppWinStyle.Hide)
SQL serverを停止
Shell("cmd.exe /C ""NET STOP MSSQL$SQLExpress /y", AppWinStyle.Hide)
Shell("cmd.exe /C ""NET STOP MSSQL$SQLExpress /y", AppWinStyle.Hide)
上のコマンドを実行しても、
システム エラー 5 が発生しました。
アクセスが拒否されました。
というエラーが発生することがあります。
これは、コマンドプロンプトの場合は、cmd.exeを管理者として実行すれば良いです。
VB.netで作成したアプリケーションの場合は、そのアプリケーションを管理者として実行すれば良いです。
ただ、毎回、「管理者として実行」を選ぶのも面倒なので、その対処法をこちらの記事に記述しました。
→VB.netで作成したアプリケーションを常に管理者として起動する方法