SQL Server SMO数据库枚举返回不存在的数据库

时间:2010-03-05 13:38:05

标签: sql-server smo

我正在使用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下运行的两台同事笔记本上失败了。

为什么SMO会返回旧的不再存在的数据库?

程序集版本均为9.0​​.242.0

2 个答案:

答案 0 :(得分:0)

您是删除旧数据库还是只重命名了它?

答案 1 :(得分:0)

删除每用户主数据库文件夹就可以了。重新启动用户实例和旧数据库失败的跟踪时重新创建它。看起来有些不对劲......

路径是

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

有关MSDN

的用户实例的详细信息