Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于从数据库中删除文件的SQL Server脚本_Sql_Sql Scripts - Fatal编程技术网

用于从数据库中删除文件的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