我正在使用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
答案 0 :(得分:0)
您是删除旧数据库还是只重命名了它?
答案 1 :(得分:0)
删除每用户主数据库文件夹就可以了。重新启动用户实例和旧数据库失败的跟踪时重新创建它。看起来有些不对劲......
路径是
C:\ Documents and Settings ** USERNAME ** \ Local Settings \ Application Data \ Microsoft \ Microsoft SQL Server Data ** SQL_SERVER_INSTANCE_NAME **
有关MSDN
的用户实例的详细信息