Sql server fn_dblog()函数的说明';s在SQL Server 2008 R2上的输出

Sql server fn_dblog()函数的说明';s在SQL Server 2008 R2上的输出,sql-server,tsql,ldf,Sql Server,Tsql,Ldf,我有一个查询来获取有关事务日志(.ldf)文件的一些基本信息。这是: WITH CTE AS ( SELECT AllocUnitName, Operation, Context, [Lock Information], SUM(CONVERT(BIGINT, [Log Record Length])) AS TotalTranLogBytes, SUM(CONVERT(BIGINT, [Lo

我有一个查询来获取有关事务日志(
.ldf
)文件的一些基本信息。这是:

WITH CTE AS
(
    SELECT
        AllocUnitName,
        Operation,
        Context,
        [Lock Information],
        SUM(CONVERT(BIGINT, [Log Record Length])) AS TotalTranLogBytes,
        SUM(CONVERT(BIGINT, [Log Record Length])) * 100 /
            SUM(CONVERT(MONEY, SUM(CONVERT(BIGINT, [Log Record Length]))))
            OVER() AS PercentOfLog
    FROM
        sys.fn_dblog(NULL,NULL)
    GROUP BY
        AllocUnitName,
        Operation,
        Context,
        [Lock Information]
)

SELECT
    AllocUnitName,
    Operation,
    Context,
    [Lock Information],
    TotalTranLogBytes,
    PercentOfLog
FROM
    CTE
WHERE
    PercentOfLog >= 0
ORDER BY
    TotalTranLogBytes DESC
不幸的是,我并不真正理解输出。。。我主要关心的是查询结果的最顶层,它是事务日志中使用的最大空间,很简单

但是,还有其他列,
AllocUnitName
Operation
Context
。就我而言,我得到:

dbo.MyMassiveTable.PK_MyMassiveTable    LOP_MODIFY_ROW  LCX_TEXT_MIX        3848564 61.6838
…作为我的输出。但是
LOP\u MODIFY\u ROW
LCX\u TEXT\u MIX
究竟意味着什么呢

显然,我可以模糊地理解它与该表的主键有关,它与UPDATE命令关联,并且文本列发生了一些事情

但我需要精确


任何能帮助我理解为什么事务日志的这一特定部分如此庞大的人都会帮上大忙

这表示该表包含某个大型对象数据类型的列,该数据类型将进行插入或更新活动(即
MAX
datatype、
XML
、CLR数据类型或
IMAGE
[N]Text

dbo.MyMassiveTable.PK_MyMassiveTable
必须是包含一个或多个LOB列的聚集索引或非聚集索引

LCX\u TEXT\u MIX

一个文本页面,其中包含LOB值和内部部分的小块 文本树。这些可以在同一环境中的LOB值之间共享 索引或堆的分区

LOP\u MODIFY\u行
通常在更新值时出现在日志中,但下面的示例显示insert也可以复制相同的日志结果

CREATE TABLE dbo.MyMassiveTable
  (
     pk    INT IDENTITY CONSTRAINT PK_MyMassiveTable PRIMARY KEY,
     Blob1 NVARCHAR(MAX)
  )

INSERT INTO dbo.MyMassiveTable
VALUES     (REPLICATE(CAST(N'X' AS VARCHAR(MAX)), 3848564 / 2));