以下に示すように、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 です