SSMS选择Top 1000 *查询失败

时间:2017-11-04 00:35:36

标签: sql-server

当我使用'选择前1000行'在我的数据库中的三个表中的SSMS中运行,我收到数据库脱机的错误。但错误消息中的数据库名称与查询中的数据库名称不匹配。

SELECT TOP 1000 ...
FROM [vc-live].[dbo].[Errors]

Msg 942, Level 14, State 4, Line 2
Database 'vc-live-old' cannot be opened because it is offline.

如果我添加一个显式的using语句 - [master]或[vc-live] - 查询运行正常。

我能找到的唯一其他奇怪的是vc-live-old数据库在sys.master_files中显示在线,尽管它在SSMS中处于脱机状态。

正如您可能怀疑的那样,数据库在将其置于单用户模式并立即回滚后,使用alter语句重命名了一段时间。

访问数据库的应用程序运行正常,我不关心由于应用程序的性质导致的数据丢失。但是,我担心重新启动数据库引擎时可能会发生什么。

DB是2012 SP2。

对这种意外行为的任何想法?

1 个答案:

答案 0 :(得分:0)

https://dba.stackexchange.com/questions/48237/renaming-sql-server-database-unusual-result

高速缓存了SELECT TOP 1000查询的执行计划。根据上述链接的建议,我使用DBCC FREEPROCCACHE来纠正这个问题。

如果您想使用更精细的命令,这篇文章也很好:https://sqlserverperformance.wordpress.com/2009/12/28/fun-with-dbcc-freeproccache/