2011-08-12 2 views
0

Javaでプログラムを作成しようとしていますが、SQL Server(2008)が特定のマシンにインストールされているかどうかを確認する必要があります。レジストリエントリは唯一の解決策ですか?私はファイルベースのソリューションを好む。Javaを使用してSQL Serverインストールの有無を確認する

現在、私はOSQL.exe(クエリとSQLスクリプトを実行するために使用する)の存在を<Installation Path>\100\Tools\Binnフォルダで確認しています。 100は何を指定していますか?プログラムでハードコーディングできますか、またはインストールパスからファイルOSQL.exeを検索する必要がありますか?

+1

'100'はSQLサーバーのバージョンで、具体的には2008年版または2008 R2版のインストールを扱っていることを意味します(2008年はバージョン10.0ですが、パス内の"。 "は削除されます) 。主に '90'ディレクトリにインストールされた' '2005'、' '80''の下に' 2000'などがあります。 –

+0

既にレジストリを参照する必要がある場合は、インストールされている場所を見つけるために、なぜあなたは次のファイル検索が結果を「改善する」のでしょうか? –

+0

@Damien:ヘッドアップありがとう。レジストリチェックについて - いいえ、私はそれをやっていません! – GPX

答えて

0

私には、この方法は目立たず、いくつかの目に見えない落とし穴がたくさんあります。私は、dbが存在するかどうかを確認するユーザーを好むだろうし、はいの場合は、接続URL、ユーザー名とパスを実行するかどうかを確認する簡単なjdbc接続を作成しようとすることができますを使用してください。

+0

ユーザーにサーバーとDBの詳細を問い合わせる前に、まずSQL Serverがインストールされているかどうか確認したいと思います。私は、ユーザーがSQL Serverのインストール時に使用したのと同じパス(例えば、 'C:\ Program Files \ Microsoft SQL Server')を提供し、その後、コードを通じてOSQL .exeファイルがあります。 – GPX

0

ローカルおよび/またはリモートインスタンスを列挙する必要があるかどうかは不明です。ローカルインスタンスの場合、レジストリを検索する方がファイルシステムをスキャンするよりも信頼性が高くなります。リモートインスタンスの場合、sqlcmd.exeはネットワーク上のインスタンスをリストできます。このpageは、オプションの概要を示しています(2005年のものですが、2008年も有効です)。

call .NET from Javaが可能な場合は、Smo Serverオブジェクトを使用して、インストールパスを含むインスタンスに関する多くの情報を取得できます。このサイトには、インスタンスを列挙し、インスタンスに関する情報を収集することについて多数の質問があります。

最後に、osql.exeはdeprecatedであることに注意してください。代わりにsqlcmd.exeを使用する必要があります。

+0

私はインスタンスをまったく列挙したくありません。私が確認する必要があるのは、SQL Serverがインストールされているかどうかだけです。 'sqlcmd'へのリンクをありがとうございました、それを調べたいかもしれません! – GPX

+0

違いはありません:少なくとも1つのインスタンスがある場合、SQL Serverがインストールされています。 sqlcmd.exeへのパスはレジストリにありますが、それはSQL Serverがインストールされているわけではなく、クライアントツールだけであることを意味します。 – Pondlife

関連する問題