sql-server - 在 SELECT INTO 上锁定数据库

标签 sql-server sql-server-2012

我有一个返回大量行的查询,我正在使用 SELECT INTO(而不是 INSERT INTO)来避免事务日志出现问题。

问题是:当此查询运行时,我可以读取对象但无法在对象资源管理器中显示它们。例如,当我尝试扩展表格项目时,我收到以下消息:

enter image description here

有没有办法避免这个问题?

最佳答案

正如 M.Ali 所解释的,SELECT INTO 在您的新表上有一个表锁,它也锁定了 SSMS 试图查询以构建树浏览器的模式对象。

我建议调整查询以便语句运行得更快。由于这是插入到没有索引且有制表 block 的堆中,因此它将按照您的说明进行最低限度的记录。因此很可能是语句的 SELECT 部分导致速度变慢。查看是否可以优化该查询或将其分解为更小的部分,以便该语句不会运行太久。

或者,使用 INSERT INTO(不指定 tablock 提示)以较小的批处理执行插入

关于sql-server - 在 SELECT INTO 上锁定数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25272245/

相关文章:

sql-server - 如何在 Kubernetes Pod 中执行 sql 脚本文件?

sql - Delphi 中 TADOStoredProc.ProcedureName 值中的 "*;1"是什么?

sql - 如何根据字符串从sql server中删除重复项

sql - T-SQL 在一个查询中创建表和索引

sql - SSRS查询分页

sql - SQL Server 中按两列计数?

c# - 如何使用c#从后面的代码中查找SQL Server实例名称和服务器名称?

sql-server - ubuntu 上的 mssql 16-04

SQL Server - 忽略始终为真的条件

SQL 服务器 : Nvarchar to Varchar