1

ローカルマシンでSQLサーバーインスタンスを見つけるためにこれを書きました:

using System;
using System.Data;
using Microsoft.SqlServer.Management.Smo;

namespace Application3
{
    class Program
    {
        static void Main(string[] args)
        {

            string srvname = string.Empty; string srvnames = null;

             DataTable dt = SmoApplication.EnumAvailableSqlServers(true);

             Console.WriteLine("------------->" + dt.Rows.Count);

             foreach (DataRow dr in dt.Rows)
             {
               try{

                Console.WriteLine("-->Instance " + dr["name"]);

                 Server srv = new Server((string)dr["name"]);

                  foreach (Database db in srv.Databases)

                      Console.WriteLine(db.Name);
              }catch(Exception e)
           {
               Console.writeLine(e.toString());
            }
        }
    }
}

ローカル マシンに 3 つのインスタンスがあります

  1. rk2k3-vm-sr (sql2008 インスタンス)
  2. rk2k3-vm-sr\sql2k8express (sql2k8 インスタンス)
  3. rk2k3-vm-sr\sqlexpress (sql2k5 インスタンス)

しかし、2 と 3 しか表示されていません。1 は表示されません。また、サーバー オブジェクトを使用して接続すると、sql2k8express で失敗します。

これが出力です....


-->インスタンス RK2K3-VM-SR\SQLEXPRESS
マスター
モデル
msdb
tempdb


-->インスタンス RK2K3-VM-SR\SQL2K8EXPRESS

Microsoft.SqlServer.Management.Common.ConnectionFailureException: サーバー RK2K3-VM-SR\SQL2K8EXPRESS への接続に失敗しました。---> Microsoft.SqlServer.Management.Com mon.ConnectionFailureException: この SQL Server バージョン (10.0) はサポートされていません。Microsoft.SqlServer.Management.Common.ConnectionManager.CheckServerVersion (ServerVersion バージョン) で Microsoft.SqlServer.Management.Common.ConnectionManager.InternalConnect (Wi ndowsIdentity impersonatedIdentity) で Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() ---内部例外スタック トレースの終了 --- Microsoft.SqlServer.Management.Common.ConnectionManager.Connect() で Microsoft.SqlServer.Management.Common.ConnectionManager.PoolConnect() で Microsoft.SqlServer.Management.Common.ConnectionManager.get_ServerVersion( ) マイクロソフトで。

どうすればこれを修正できますか? 私のシステムのファイアウォールは無効になっており、すべての SQL サービスが実行されています。

4

1 に答える 1

3

このコードは以前に SQL 2005 用に作成されたものですか? はいの場合は、する必要があります

  1. SQL 2008 + 管理オブジェクト用の SQL 2005 Backwards Compatibilty Pack をマシンにインストールします。( http://www.microsoft.com/downloads/details.aspx?FamilyID=b33d2c78-1059-4ce2-b80d-2343c099bcb4&displaylang=en )

  2. SLQ 2005 の SDK dll への参照を削除し、SQL 2008 の SK DLL への参照を再設定します。 ( http://msdn.microsoft.com/en-us/library/ms162129.aspx )

  3. 再構築します。

参照: SQL 2008 マシンでアプリケーションが Microsoft.SQLServer.SMO を見つけられない

于 2009-07-16T06:08:14.023 に答える