用于从数据库中删除文件的SQL Server脚本
我需要删除包含一组文件的表中的所有行。从执行一个简单的用于从数据库中删除文件的SQL Server脚本,sql,sql-scripts,Sql,Sql Scripts,我需要删除包含一组文件的表中的所有行。从执行一个简单的删除操作将或多或少地锁定计算机,因为行数和文件大小都很大。我正在寻找创建一个SQL脚本,将完成这项任务,而不锁定我的计算机,有人能告诉我正确的方向吗 提前谢谢。您是否尝试过截断-这将删除所有内容 TRUNCATE TABLE yourTable 从 TRUNCATE TABLE类似于没有WHERE子句的DELETE语句;然而,TRUNCATE TABLE速度更快,并且使用更少的系统和事务日志资源 与DELETE语句相比,TRUNCATE T
删除操作将或多或少地锁定计算机,因为行数和文件大小都很大。我正在寻找创建一个SQL脚本,将完成这项任务,而不锁定我的计算机,有人能告诉我正确的方向吗
提前谢谢。您是否尝试过截断
-这将删除所有内容
TRUNCATE TABLE yourTable
从
TRUNCATE TABLE类似于没有WHERE子句的DELETE语句;然而,TRUNCATE TABLE速度更快,并且使用更少的系统和事务日志资源
与DELETE语句相比,TRUNCATE TABLE具有以下特性
优点:
使用更少的事务日志空间
DELETE语句一次删除一行并记录一个条目
在每个已删除行的事务日志中。截断表删除
通过取消分配用于存储表数据的数据页来删除数据
并仅在事务日志中记录页面取消分配
通常使用较少的锁
使用行锁执行DELETE语句时,中的每一行
该表已锁定以进行删除。TRUNCATE表始终锁定
表和页,但不是每行
毫无例外,表中只剩下零页
执行DELETE语句后,表仍然可以包含
空页。例如,无法释放堆中的空页
至少没有独占(LCK_M_X)表锁。如果删除
操作不使用表锁,表(堆)将包含
许多空白页。对于索引,删除操作可以保留为空
后面的页面,尽管这些页面将由
后台清理过程
如果要删除完整的表格,请使用截断或从TABLENAME1中选择*INTO TEMP_TABLENAME1,其中filename@filename;截断表tablename 1;插入到TABLENAME1中,从TEMP_TABLENAME1中选择*
@rs但这会像从
中删除一样锁定我的计算机吗?不会,truncate很快,不会记录任何删除。这会像从
中删除一样锁定我的计算机吗?@tnw不应该,因为truncate
不会逐行记录删除
的操作,但如果我的表有外键约束怎么办?在这种情况下不能使用truncate。您有外键约束吗?@tnw even delete不适用于上述情况,除非您指定删除选项或在约束中保留NULL