2

.NET 4.5 を対象とする Windows フォーム アプリケーションがあります。このアプリケーションは、SQL Server 管理オブジェクト (SMO) を使用して、プログラムによるデータベースのバックアップと復元の機能を提供します。

アプリケーションは、両方のバージョンでサポートされている機能のみを使用するため、SQL Server 2008 R2 と SQL Server 2012 の両方の Express エディションをサポートする必要があります。

プロジェクトで参照する SMO アセンブリ (Microsoft.SqlServer.ConnectionInfo, Microsoft.SqlServer.Smo, Microsoft.SqlServer.SmoExtendedなど) は、クライアントがインストールした SQL Server のバージョンに応じて異なるフォルダーに配置されます。

SQL Server Express 2008 R2: C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies

SQL Server Express 2012: C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies

ご覧のとおり、クライアントが 2008 R2 を実行している場合、アセンブリは100\SDKフォルダーの下にありますが、SQL Server 2012 を実行する場合は、アセンブリはフォルダーにあり110\SDKます。

そのため、フォルダーを参照する100\SDKと、SQL Server 2012 を実行しているクライアントでアプリケーションが機能しなくなります。クライアントには110\SDKフォルダーしかないためです。

では、このようなシナリオは通常どのように処理されるのでしょうか?

4

1 に答える 1

3

SQL Server 管理オブジェクト (SMO) を使用するアプリケーションを開発する場合は、SQL Server をインストールするときにクライアント ツール SDK を選択する必要があります。

SQL Server をインストールせずに Client Takes SDK をインストールするには、SQL Server 機能パックから共有管理オブジェクトをインストールします。

アプリケーションを実行するコンピューターに SQL Server 管理オブジェクトがインストールされていることを確認する場合は、SQL Server 機能パックの共有管理オブジェクト .msi を使用できます。

ソース: SMO のインストール - SQL Server 2012

下線を引いたパラグラフを見ると、実行されている SQL Server のバージョンに関係なく、共通の共有管理オブジェクト msi をクライアント マシン全体にいつでもインストールできると思います。

于 2012-12-04T11:25:05.470 に答える