0

ここに非常に簡単な質問がありますが、それを解決する答えが見つかりません。

次のような接続文字列があります。

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB\DB.mdf;Initial Catalog=DB;Integrated Security=True");

動作しますが、SQL Server Express がインストールされていない PC で使用しようとすると、接続できません。その「\SQLEXPRESS」部分を削除すれば明らかに機能しますが、ソフトウェアをインストールする各 PC で手動で行うのは避けたいと思います。try-catchを使ってやってみましたが、遅すぎてあまりお勧めできません。

まあ、コードでそれを行う方法を知りたいだけです。そうする簡単な方法はありますか?問題を完全に解決しますか?(つまり、他のエディションでも確実に機能しますか?)

前もって感謝します!(そして私の英語でごめんなさい)

4

4 に答える 4

3

接続文字列をソフトウェアにハードコーディングしないでください。

この質問を投稿している正確な理由のために、それらを構成 (web.configまたは) に配置する必要があります。app.config

アプリケーションが実行されるマシンに SQL のバージョンがインストールされているとは限りません。

于 2012-07-06T20:17:06.423 に答える
1

editionT-SQL 自体で、サーバー プロパティを調べることができます。

SELECT  
   SERVERPROPERTY('edition') as 'Product Edition'

Express Edition (64-bit)これは、チェックしているバージョンが実際に Express エディションである場合のようなものを返します。

その他の利用可能なすべてのサーバー プロパティの詳細については、関連する MSDN ドキュメントを参照してください

于 2012-07-06T20:29:30.140 に答える
0

おそらく、ユーザーがサーバーを選択できるようなものを作成する必要があります。レジストリを使用して、ローカルで実行されている SQL Server インスタンスを検出できますが、ネットワーク インスタンスに接続している場合は機能しません。SMO (サーバー管理オブジェクト) の使用に関するこの回答を参照してください。 プログラムによる SQL Server エディションの検出

于 2012-07-06T20:23:16.293 に答える
0

明確にするために:SQLサーバーは「デフォルト」または「名前付き」インスタンスとしてインストールできます。デフォルトでは、高速インストールは名前付きインスタンスとして実行されると思います

これにより、単一のサーバー マシンで複数の SQL サーバーを実行できます。

デフォルトのインスタンスに接続するには、サーバー名または IP を指定するだけです

Server=SomeServer

名前付きインスタンスに接続するには、server/ip + インスタンス名をバックスラッシュで区切って指定します。

Server=SomeServer\SomeInstance

あなたの場合、ローカル マシン上の「SQLEXPRESS」という SQL インスタンスに接続しようとしています。(ドット . はローカル マシンを意味します)

サーバー コンピューターに SQL をインストールし、アプリケーション構成ファイル (App.config) を使用して接続文字列を指定するのが理想的です。

App.config は、接続文字列を追加できる ConnectionStrings というセクションをサポートしています。次に、System.Configuration への参照をプロジェクトに追加すると、構成マネージャー クラスを使用して接続文字列を取得できます。

App.config:

<connectionStrings>
    <add name="YourConnectionString"
        connectionString="Server=someSqlServer\SomeInstance;Initial Catalog=SomeDB;Integrated Security=True" 
providerName="System.Data.SqlClient" />
</connectionStrings>

コードでの使用:

ConfigurationManager.ConnectionStrings["YourConnectionStringName"]
于 2012-07-06T20:23:17.993 に答える