我有一个返回大量行的查询,我正在使用 SELECT INTO
(而不是 INSERT INTO
)来避免事务日志出现问题。
问题是:当此查询运行时,我可以读取对象但无法在对象资源管理器中显示它们。例如,当我尝试扩展表格项目时,我收到以下消息:
有没有办法避免这个问题?
最佳答案
正如 M.Ali 所解释的,SELECT INTO 在您的新表上有一个表锁,它也锁定了 SSMS 试图查询以构建树浏览器的模式对象。
我建议调整查询以便语句运行得更快。由于这是插入到没有索引且有制表 block 的堆中,因此它将按照您的说明进行最低限度的记录。因此很可能是语句的 SELECT 部分导致速度变慢。查看是否可以优化该查询或将其分解为更小的部分,以便该语句不会运行太久。
或者,使用 INSERT INTO(不指定 tablock 提示)以较小的批处理执行插入
关于sql-server - 在 SELECT INTO 上锁定数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272245/