我有点困惑。TRUNCATEONLY
SQL 2012 中的参数是否已更改,或者 SQL 2008 R2 中的文档是否有误?
2008 R2
将文件末尾的所有可用空间释放给操作系统,但不会在文件内执行任何页面移动。数据文件仅收缩到最后分配的范围。如果使用 TRUNCATEONLY 指定,则忽略 target_percent。
TRUNCATEONLY 仅适用于数据文件。日志文件不受影响。
最后一条语句让我觉得这对日志文件根本没有影响?
2012年
将文件末尾的所有可用空间释放给操作系统,但不会在文件内执行任何页面移动。数据文件仅收缩到最后分配的范围。如果使用 TRUNCATEONLY 指定,则忽略 target_percent。
TRUNCATEONLY 影响日志文件。要仅截断数据文件,请使用 DBCC SHRINKFILE。
最后一条语句现在告诉我它只影响日志文件?
那么是功能改变了,还是文档中有错误,或者我的解释有误?
如果我在我们的生产服务器上运行以下查询:
SELECT DISTINCT TOP 10
t.TEXT QueryName,
s.execution_count AS ExecutionCount,
s.max_elapsed_time / 100000 AS MaxElapsedTime,
ISNULL(s.total_elapsed_time / s.execution_count, 0) / 100000 AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
,s.plan_handle, s.plan_generation_num
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
ORDER BY
s.max_elapsed_time / 100000 DESC
Run Code Online (Sandbox Code Playgroud)
我的主要查询是“创建过程.......”这是否意味着 sql server 重新编译这个存储过程不止一次?