标签: dbcc

Sql Server 2008 R2 DBCC SHRINKFILE 严重错误

我正在尝试在 Sql Server 2008 R2 中运行以下命令:

DBCC SHRINKFILE('filename')
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此命令时,出现以下错误:

Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command.  The results, if any, should be discarded.
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么会出现此错误以及如何解决此问题?

谢谢!

dbcc sql-server-2008-r2

2
推荐指数
1
解决办法
6068
查看次数

删除 NDF 文件后附加数据库时出错

我错误地从 SQL Server 2008 数据库中删除了 .ndf 文件。在尝试附加以前的副本时,SSMS 会引发此错误:

服务器“MDSWIN34”的附加数据库失败。(Microsoft.SqlServer.Smo)


附加信息:

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)


操作系统在读取文件“C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\template.ndf”中偏移量 0000000000000000 的过程中向 SQL Server 返回错误 38(到达文件末尾。)。SQL Server 错误日志和系统事件日志中的其他消息可能会提供更多详细信息。这是一种严重的系统级错误情况,会威胁数据库的完整性,必须立即纠正。完成完整的数据库一致性检查 (DBCC CHECKDB)。此错误可能由多种因素引起;有关详细信息,请参阅 SQL Server 联机丛书。(Microsoft SQL Server,错误:823)

这是什么原因?我丢失了所有数据吗?

sql-server-2008 dbcc

2
推荐指数
1
解决办法
2501
查看次数

如何通过查询“fn_dblog”或DBCC LOG('DataBaseName')打印出一个事务的查询SQL文本?

在过去 24 小时内的某个时间点,使用 DB 的几个应用程序之一对客户 SQL Server 2008 (v 9.0 SP4) 进行了一些更改。

它不是特别重要,但如果我可以转储与时间段对应的 SQL 语句,它将代表对这些应用程序如何使用表的有用见解。

我感兴趣的表不会经常更改,因此应用于这些特定表的事务日志的总行数不应非常大。

我看到了“fn_dblog”函数和 DBCC LOG('DataBaseName') 命令,似乎有相当多的相关信息,但我不知道如何进行下一步并让它们生成实际更改的报告.

这篇博文中有一些细节; http://janiceclee.com/tag/fn_dump_dblog/

USE AdventureWorks
    GO
    SELECT [Transaction ID], count(*)
    FROM fn_dblog(DEFAULT, DEFAULT)
    where AllocUnitName LIKE '%Production.TransactionHistory%'--table name
    GROUP BY [Transaction ID]
    HAVING COUNT(*) >= 113443 --(estimated/actual) number of deleted records
Run Code Online (Sandbox Code Playgroud)

但是我没有任何这样的细节,只有表名(如果需要,我可以得到主键)

以及另一篇博客文章,根据表命名使用类似的示例数据; http://www.sqlskills.com/blogs/paul/post/Search-Engine-QA-6-Using-fn_dblog-to-tell-if-a-transaction-is-contained-in-a-backup.aspx

    USE AdventureWorks;

    GO

    SELECT [Current LSN], Operation, [Transaction ID], AllocUnitName FROM fn_dblog (NULL, NULL);

    GO

The log record at that LSN is:

    00000058:00001870:0001  LOP_MODIFY_ROW     0000:00001338  HumanResources.Employee.PK_Employee_EmployeeID

This …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server dbcc

2
推荐指数
1
解决办法
2万
查看次数

跟踪标志正在运行,但在发生死锁时没有消息

跟踪标志用于临时设置特定服务器特征或关闭特定行为

有关跟踪标志的更多信息在这里

DBCC TRACESTATUS
Run Code Online (Sandbox Code Playgroud)

以上是显示当前在我的系统上运行的所有跟踪标志的命令。

在此处输入图片说明

我有两个问题:

1) 除了DBCC TRACESTATUS?之外,还有其他方法可以找到当前正在运行的跟踪标志列表吗?

2) 可以在上图中看到跟踪标志 1222 处于活动状态,但发生死锁时我没有收到任何电子邮件。还需要做什么?

sql-server deadlock dbcc scripting automation

2
推荐指数
1
解决办法
153
查看次数

计算每行的总“行上”字节......简单的方法

我们要计算表中每一行的总“行上”存储字节数。正如我们所理解的,我们必须将每一列的 DATALENGTH() 相加,同时还要考虑 NULL 和诸如 VARCHAR(MAX) 之类的东西,它们在“行”上只有一个 24 字节的指针。我们知道每一行也有一些开销,这在下面的查询中没有考虑。

SELECT   ROW_ID,

         CASE
              WHEN COLUMNPROPERTY(OBJECT_ID('EXAMPLE_TABLE'),'COL1','PRECISION') = -1 THEN 24
              ELSE ISNULL(DATALENGTH(COL1), 1)
         END
          +
         CASE
              WHEN COLUMNPROPERTY(OBJECT_ID('EXAMPLE_TABLE'),'COL2','PRECISION') = -1 THEN 24
              ELSE ISNULL(DATALENGTH(COL2), 1)
         END
          +
         CASE
              WHEN COLUMNPROPERTY(OBJECT_ID('EXAMPLE_TABLE'),'COL3','PRECISION') = -1 THEN 24
              ELSE ISNULL(DATALENGTH(COL3), 1)
         END
          +
         ...
         ...
         AS ROW_SIZE

FROM     EXAMPLE_TABLE

ORDER BY ROW_SIZE DESC
;
Run Code Online (Sandbox Code Playgroud)

多么野兽!而且这只是一个近似值。

然后我们发现

DBCC SHOWCONTIG ('EXAMPLE_TABLE') WITH TABLERESULTS
Run Code Online (Sandbox Code Playgroud)

返回最大记录大小。这表明 SQL Server 中已经有一个算法可以计算行的确切大小。

我们如何直接访问该算法?

sql-server storage dbcc size sql-server-2017

2
推荐指数
1
解决办法
269
查看次数

DBCC LOGINFO 列“状态”中的 2 是否意味着它不能被截断?

当我运行命令时DBCC LOGINFO,一些Status行包含 2。

现在我想检查为什么我的事务日志不能被截断。我怎么看这个?2 是否意味着Status它们不可重用或操作正在等待(备份、恢复)?是说不能截断吗?

sql-server dbcc transaction-log

1
推荐指数
1
解决办法
2418
查看次数

通过代理作业运行时如何获取“dbcc checkdb”报告?

当我通过 Management Studio 运行 dbcc checkdb 时,我会得到完整的报告作为输出。

但是,当我通过 sql 代理作业运行 dbcc checkdb 时,我认为如果 dbcc checkdb 未检测到错误,则作业状态将显示为成功;或者如果 dbcc checkdb 未检测到错误,则作业状态将显示为成功。否则作业状态将显示为失败。那是对的吗?

通过 sql 代理作业运行 dbcc checkdb 时如何获取报告?

sql-server dbcc dbcc-checkdb sql-server-2019

-3
推荐指数
1
解决办法
308
查看次数