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 的两台同事笔记本电脑上看到它失败了。

为什么 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 回答