当我为 70-461 考试而学习时,我正在 SSMS 中玩弄一些东西以学习更多知识,但我遇到了一些问题。我正在尝试创建一个表来使用,因此我不必更改/删除 AdventureWorks 或 TSQL2012 数据库中任何已创建的表。在实际创建要使用的表之前,我创建了一个临时表来测试我的代码,这是我用来将值插入表中的代码:
DECLARE @i INT = 1
WHILE @i < 10
BEGIN
INSERT INTO #TestEmployeeCountry
VALUES ( SUBSTRING('ABCDEFGHIJKLMNOP', @i, 1),
CASE (SELECT ABS(CHECKSUM(NEWID()))%10 +1)
WHEN 1 THEN 'USA'
WHEN 2 THEN 'CANADA'
WHEN 3 THEN 'MEXICO'
WHEN 4 THEN 'UK'
WHEN 5 THEN 'FRANCE'
WHEN 6 THEN 'SPAIN'
WHEN 7 THEN 'RUSSIA'
WHEN 8 THEN 'CHINA'
WHEN 9 THEN 'JAPAN'
WHEN 10 THEN 'INDIA'
END)
SET @i = @i + 1
END;
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是我不断收到错误消息“无法将值 …
有一个较旧但较大的数据库(在 san 上为 6tb),其页面验证选项仍设置为 TORN_PAGE_DETECTION。将页面验证更改为校验和模式时,如何将新的校验和应用于所有现有页面?对页面验证模式进行此更改时是否有任何需要注意的大开销?这是否需要在较长的维护窗口期间完成?
SQL 2014 当前数据库兼容级别 = 120
最近,我被要求从生产环境刷新测试服务器上的几个数据库。一直想遵循最佳实践,我使用WITH CHECKSUM选项执行备份,最终得到以下错误:
Msg 3043, Level 16, State 1, Line 32
BACKUP 'DBName' detected an error on page (1:428321) in file 'F:\path\DBName.mdf'.
Msg 3013, Level 16, State 1, Line 32
BACKUP DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)
对错误感到惊讶,我运行DBCC CHECKDB以查看发生了什么,但不幸的是(或者幸运的是),它恢复正常。
到目前为止,我发现的所有信息都鼓励使用 DBCC CHECKDB 的发现作为下一步的指南,所以我不确定如何解决这个问题?
一些快速信息:
SQL Server 是 2008 R2。
我在msdb.dbo.suspect_pages表中发现了错误的确认。它包含事件类型 1 和 3。
我使用的 DBCC 命令是 DBCC CHECKDB (DBName) WITH NO_INFOMSGS, ALL_ERRORMSGS;
我不是正式的 DBA,但由于我有一些经验,所以我被允许执行备份和恢复。
我确实读过类似的帖子DBCC CheckDB 会错过哪些类型的损坏?. 然而,虽然我相信我明白为什么(那篇文章的重点),但我不知道如何解决它。
通过省略WITH CHECKSUM选项,我能够成功执行备份。
在此先感谢您的指导! …
checksum ×4
case ×1
corruption ×1
dbcc-checkdb ×1
insert ×1
postgresql ×1
replication ×1
sql-server ×1
t-sql ×1