1

以下に示すように、SMO を使用して SQL Server 2005 インスタンスのすべてのデータベースを列挙していますが、存在しないデータベースが返されます (過去に存在していました)。


Using conn As SqlConnection = New SqlConnection(_connectionString)
    conn.Open()
    Dim smoConnection As New ServerConnection(conn)
    Dim srv As Server = New Server(smoConnection)
    For Each db As Database In srv.Databases
        If db.Name.Contains("blablabla") Then
            doStuffOnDatabase(db)
        End If
    Next
    smoConnection.Disconnect()
End Using

同じサーバーで、実行中

exec sp_databases();
正しいデータベース リストを返します。SMO が sp_databases() と同じリストを提供しない理由がわかりません。

上記のコードは、顧客のマシンで正しく動作します。Windows Vista で実行されている 2 人の同僚のラップトップで、そのように失敗するのを見たことがあります。

SMO が古い既存のデータベースを返さないのはなぜですか?

アセンブリのバージョンはすべて 9.0.242.0 です

4

2 に答える 2

0

古いデータベースを削除したか、単に名前を変更しましたか?

于 2010-03-05T13:40:33.893 に答える
0

ユーザーごとのマスター データベース フォルダーを削除すると、うまくいきました。ユーザーインスタンスを再起動すると再作成され、古いデータベースのトレースが消えました。何かが間違っていたようです...

パスは

C:\Documents and Settings**USERNAME**\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data**SQL_SERVER_INSTANCE_NAME**

ユーザー インスタンスの詳細については、MSDNを参照してください

于 2010-03-05T17:59:43.220 に答える