我有一个返回大量行的查询,并且我正在使用SELECT INTO
(而不是INSERT INTO
)来避免事务日志出现问题。
问题是:运行此查询时,我可以读取对象,但不能在对象资源管理器中显示它们。例如,当我尝试扩展表格项时,我收到以下消息:
有办法避免这个问题吗?
现在这里有一个测试给您,它将为您的问题提供答案...
在SSMS中打开查询窗口。编写任何查询,该查询将返回任何数目或行,可能只有一行或可能是10。并执行以下操作
BEGIN TRANSACTION;
SELECT *
INTO NEW_Test_TABLE
FROM TABLE_NAME
现在,打开另一个窗口,并针对此NEW_Test_TABLE编写SELECT语句。
SELECT * FROM NEW_Test_TABLE
您的查询将永远不会完成执行,将不返回任何结果(此时,NEW_Test_TABLE仅存在于缓冲区队列中)。除非您返回到第一个查询窗口并提交事务,否则,如果您转到查询窗口1和ROLLBACK TRANSACTION
NEW_Test_TABLE在缓冲区队列中已经存在一次,并且不再存在。
同样,当执行中的Select into语句时,没有任何内容提交到磁盘,因此SSMS无法看到它,也无法通过对象资源管理器向您显示有关它的任何信息。
因此,答案是耐心等待执行查询,然后让SQL Server将SELECT INTO
事务提交到磁盘,您将能够通过查询它或通过对象资源管理器来访问它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句