0

次の場合を確認する方法は何ですか、

  • SQLServerのローカルで実行されているインスタンスがあります
  • もしそうなら、データベースXは存在しますか?
  • もしそうなら、データベースXは統合セキュリティを使用して接続できますか?

アプリケーションの起動時に、可能な限りクリーンな方法で上記を実行したいと思います。具体的には、さまざまな開発ツールの接続ウィザードでドロップダウンをクリックしてデータベースを参照するときによく見られる種類の遅延が発生するのではないかと心配しています。

インスタンス名はまたはのいずれかであると想定でき.ます.\sqlexpress

エンドユーザーは主にWindowsXPを実行しています。

これの実際のコンテキストは、開発者がインストールできるローカルデータベースをアプリケーションに自動的に認識させたいということです。

接続文字列に適切な値を使用してSqlConnectionを作成するのと同じくらい簡単で、それが安全で推奨される方法である場合、私はそれで問題ありません。悪いエンドユーザーエクスペリエンスを導入しないように安全を確保しようとしているので、これを求めています。

4

3 に答える 3

1

サーバーに接続し(local)ます。良ければ、データベースに切り替えmasterます。次に、次の SQL ステートメントを実行します。

SELECT * FROM sysdatabases WHERE name = 'YOUR DB NAME HERE'
于 2012-06-27T19:28:12.127 に答える
1

のいずれかを確認するか、単に で接続して select from を実行しようとすることがわかっ..\sqlexpressいるtry-catch場合master.sysdatabases

サーバーがわからない場合は、SQL Server 管理オブジェクトライブラリを使用して、検出可能なすべてのインスタンス/データベースを一覧表示できます。この質問では、次の方法について詳しく説明します。

C# で SMO を使用して SQL Server の利用可能なインスタンスを一覧表示する方法は?

SMOServerクラスには、Databases反復するプロパティがあります。

于 2012-06-27T19:27:04.967 に答える
0

プロパティ SqlConnection.ConnectionString を使用して、接続タイムアウトの値を設定します。デフォルト値は 15 秒で、これは長い時間です。したがって、Adam のアイデアのようにすべての DB サーバーを列挙し、タイムアウト値を減らすと、おそらくユーザー エクスペリエンスはそれほど悪くないでしょう。

詳細はSqlConnection Classにあります。

失敗するまでに長い時間がかかる可能性があるため、SQL クエリを作成したくありません。

@アーロン、あなたが決めたことを教えてください。

于 2012-06-27T21:56:59.090 に答える