Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 dbcc checkdb + checkdsk. После checkdb имеем Windows found problems with the file system.  [new]
Sergey198305
Member

Откуда:
Сообщений: 14
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Apr 2 2010 15:53:02 Copyright (c) Microsoft Corporation Standard Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2)

Есть job cостоит из 3-х степов:

/****** Object:  Job [Cdsk]    Script Date: 03/11/2012 12:05:42 ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object:  JobCategory [[Uncategorized (Local)]]]    Script Date: 03/11/2012 12:05:42 ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job @job_name=N'Cdsk', 
		@enabled=1, 
		@notify_level_eventlog=0, 
		@notify_level_email=0, 
		@notify_level_netsend=0, 
		@notify_level_page=0, 
		@delete_level=0, 
		@description=N'No description available.', 
		@category_name=N'[Uncategorized (Local)]', 
		@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [1]    Script Date: 03/11/2012 12:05:43 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'1', 
		@step_id=1, 
		@cmdexec_success_code=0, 
		@on_success_action=3, 
		@on_success_step_id=0, 
		@on_fail_action=3, 
		@on_fail_step_id=0, 
		@retry_attempts=0, 
		@retry_interval=0, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'/*********************chkdsk D:\**********************************/
declare
@cmd NVARCHAR(4000)
create table #test (ww varchar(max))
SET @Cmd = N''chkdsk d: /i''
INSERT INTO #test
exec master.dbo.xp_cmdshell @cmd

DECLARE @Tbl table(ww varchar(max))
insert into @Tbl
select ww from #test where ww like ''%found%''

IF EXISTS (select ww from #test where ww like ''%found%'' and ww not like ''%and found no problems%'')
insert into servername.routing.[dbo].Chkdsk
select GETDATE() as [Дата],
(select fname from ds_faces where fid=dbo.get_option(2)) as [Филиал],''D:\'' as [Dsk], ww as [Текст] from @Tbl
ELSE insert into servername.routing.[dbo].Chkdsk
select GETDATE() as [Дата],
(select fname from ds_faces where fid=dbo.get_option(2)) as [Филиал],''D:\'' as [Dsk], ''Все ОК!''

GO
/*********************chkdsk C:\**********************************/
declare
@cmd2 NVARCHAR(4000)
create table #test2 (ww varchar(max))
SET @Cmd2 = N''chkdsk c: /i''
INSERT INTO #test2
exec master.dbo.xp_cmdshell @cmd2

DECLARE @Tb2 table(ww varchar(max))
insert into @Tb2
select ww from #test2 where ww like ''%found%''

IF EXISTS (select ww from #test2 where ww like ''%found%'' and ww not like ''%and found no problems%'')
insert into servername.routing.[dbo].Chkdsk
select GETDATE() as [Дата],
(select fname from ds_faces where fid=dbo.get_option(2)) as [Филиал],''С:\'' as [Dsk], ww as [Текст] from @Tb2
ELSE insert into servername.routing.[dbo].Chkdsk
select GETDATE() as [Дата],
(select fname from ds_faces where fid=dbo.get_option(2)) as [Филиал],''С:\'' as [Dsk], ''Все ОК!''', 
		@database_name=N'dbname', 
		@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [2]    Script Date: 03/11/2012 12:05:43 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'2', 
		@step_id=2, 
		@cmdexec_success_code=0, 
		@on_success_action=3, 
		@on_success_step_id=0, 
		@on_fail_action=3, 
		@on_fail_step_id=0, 
		@retry_attempts=0, 
		@retry_interval=0, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'dbcc checkdb with no_infomsgs', 
		@database_name=N'dbname', 
		@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/****** Object:  Step [3]    Script Date: 03/11/2012 12:05:43 ******/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'3', 
		@step_id=3, 
		@cmdexec_success_code=0, 
		@on_success_action=1, 
		@on_success_step_id=0, 
		@on_fail_action=2, 
		@on_fail_step_id=0, 
		@retry_attempts=0, 
		@retry_interval=0, 
		@os_run_priority=0, @subsystem=N'TSQL', 
		@command=N'insert into servername.routing.[dbo].Chkdsk
select GETDATE() as [Дата],
(select fname from ds_faces where fid=dbo.get_option(2)) as [Филиал], ''Checkdb''as [Dsk],
(SELECT message FROM msdb..sysjobhistory where run_date =convert(nvarchar, GETDATE(), 112) 
and job_id =(SELECT job_id FROM msdb..sysjobs where name =''cdsk'')
and step_id=2
and  run_time>replace(convert(varchar(8), DATEADD (minute,-20,GETDATE()), 8),'':'','''')
) as [Текст]
', 
		@database_name=N'dbname', 
		@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'sh', 
		@enabled=1, 
		@freq_type=4, 
		@freq_interval=1, 
		@freq_subday_type=1, 
		@freq_subday_interval=0, 
		@freq_relative_interval=0, 
		@freq_recurrence_factor=0, 
		@active_start_date=20110625, 
		@active_end_date=99991231, 
		@active_start_time=43000, 
		@active_end_time=235959

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

GO


Первый раз отработал нормально по всем площадкам (7 марта)
8 марта и далее до сегодняшнего дня выдает ошибки на диске D:\
Думал что может где то ошибся в скрипте залез на 2-е площадки - проверил - действительно есть ошибки на диске.
Устранил ошибки командой chkds d: /f . Ошибки пофиксилились. Запустил скрипт, затем сделал chkdsk d :/i - опять сообщение об ошибках.
Затем опять пофиксил ошибки. Решил проверить предположение запустил dbcc checkdb with no_infomsgs вручную в SSMS сама проверка базы заканчивается без ошибок. Запустил chkdsk d :/i - ошибки.
Делал параллельно на 2-х площадках - результаты аналогичные.
В eventlog ошибок нет.

Собственно хочется понять что происходит то ?

p.s. раньше job состоял только из 1-го степа - т.е. проверялись диски d:\ и c:\ и инфа отправлялась на удаленный сервер, таких ошибок не было в принципе.....
площадок порядка ста проблема зафиксировалась на 95-ти.
p.p.s есть предположение что дело в volume snapshot...

Сообщение было отредактировано: 11 мар 12, 12:30
11 мар 12, 12:27    [12224661]     Ответить | Цитировать Сообщить модератору
 Re: dbcc checkdb + checkdsk. После checkdb имеем Windows found problems with the file system.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Ну, диск может сыпаться.
11 мар 12, 12:32    [12224691]     Ответить | Цитировать Сообщить модератору
 Re: dbcc checkdb + checkdsk. После checkdb имеем Windows found problems with the file system.  [new]
Sergey198305
Member

Откуда:
Сообщений: 14
Гавриленко Сергей Алексеевич,
сразу на нескольких площадках ? (их много около 90-та)
Если пофиксить ошибки chkdsk d: /f - и затем проверить chkdsk d: /i - ошибок нет (по мнению ОС), по информации от контроллеров - состояние рейда тоже нормально.

Конфигурации(все аналогичные на всех площадках): собрано зеркало из 2-х физ. дисков разбито на логические C:\ и D:\, на C:\ система на D:\ база и лог (вопрос о быстродействии не обсуждаем т.к. все всех устраивает база не более 10 Гб OLTP)
11 мар 12, 12:40    [12224747]     Ответить | Цитировать Сообщить модератору
 Re: dbcc checkdb + checkdsk. После checkdb имеем Windows found problems with the file system.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31983
Sergey198305
Собственно хочется понять что происходит то ?

p.s. раньше job состоял только из 1-го степа - т.е. проверялись диски d:\ и c:\ и инфа отправлялась на удаленный сервер, таких ошибок не было в принципе.....
площадок порядка ста проблема зафиксировалась на 95-ти.
p.p.s есть предположение что дело в volume snapshot...


checkdb просто работает с файлами базы, понятно, что сиквел не может сам испортить структуру файловой системы.

Нужно искать проблему в ОС и ниже.
Sergey198305
Устранил ошибки командой chkds d: /f . Ошибки пофиксилились.
Скорее не пофиксились, а проигнорировались :-)

Чекдиск же не может восстановить данные, которые были утеряны/искажены - он просто сделал новые ссылки/убрал неправильные ссылки.
11 мар 12, 12:42    [12224770]     Ответить | Цитировать Сообщить модератору
 Re: dbcc checkdb + checkdsk. После checkdb имеем Windows found problems with the file system.  [new]
Sergey198305
Member

Откуда:
Сообщений: 14
alexeyvg
Скорее не пофиксились, а проигнорировались :-)

Чекдиск же не может восстановить данные, которые были утеряны/искажены - он просто сделал новые ссылки/убрал неправильные ссылки.



Залез на 3-ю площадку запускаю, получаю:

chkdsk d: /i
The type of the file system is NTFS.
Volume label is Data.

WARNING! F parameter not specified.
Running CHKDSK in read-only mode.

WARNING! I parameter specified.
Your drive may still be corrupt even after running CHKDSK.

CHKDSK is verifying files (stage 1 of 3)...
1088768 file records processed.
File verification completed.
33 large file records processed.
0 bad file records processed.
0 EA records processed.
0 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
216089 index entries processed.
Index verification completed.
5 unindexed files processed.
CHKDSK is verifying security descriptors (stage 3 of 3)...
1088768 security descriptors processed.
Security descriptor verification completed.
6874 data files processed.
Windows found problems with the file system.
Run CHKDSK with the /F (fix) option to correct these.

57239563 KB total disk space.
48133740 KB in 95724 files.
44700 KB in 6876 indexes.
0 KB in bad sectors.
1156619 KB in use by the system.
65536 KB occupied by the log file.
7904504 KB available on disk.

4096 bytes in each allocation unit.
14309890 total allocation units on disk.
1976126 allocation units available on disk.

Останавливаю службы скуля делаю
chkdsk d: /f /x
The type of the file system is NTFS.
Volume dismounted. All opened handles to this volume are now invalid.
Volume label is Data.

CHKDSK is verifying files (stage 1 of 3)...
1088768 file records processed.
File verification completed.
33 large file records processed.
0 bad file records processed.
0 EA records processed.
0 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
2461672 index entries processed.
Index verification completed.
5 unindexed files processed.
CHKDSK is verifying security descriptors (stage 3 of 3)...
1088768 security descriptors processed.
Security descriptor verification completed.
6874 data files processed.

57239563 KB total disk space.
48133740 KB in 95724 files.
44700 KB in 6876 indexes.
0 KB in bad sectors.
1156619 KB in use by the system.
65536 KB occupied by the log file.
7904504 KB available on disk.

4096 bytes in each allocation unit.
14309890 total allocation units on disk.
1976126 allocation units available on disk.

Затем проверяем:
с
The type of the file system is NTFS.
Volume label is Data.

WARNING! F parameter not specified.
Running CHKDSK in read-only mode.

CHKDSK is verifying files (stage 1 of 3)...
1088768 file records processed.
File verification completed.
33 large file records processed.
0 bad file records processed.
0 EA records processed.
0 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
2461672 index entries processed.
Index verification completed.
5 unindexed files processed.
CHKDSK is verifying security descriptors (stage 3 of 3)...
1088768 security descriptors processed.
Security descriptor verification completed.
6874 data files processed.
Windows has checked the file system and found no problems.

57239563 KB total disk space.
48133740 KB in 95724 files.
44700 KB in 6876 indexes.
0 KB in bad sectors.
1156619 KB in use by the system.
65536 KB occupied by the log file.
7904504 KB available on disk.

4096 bytes in each allocation unit.
14309890 total allocation units on disk.
1976126 allocation units available on disk.

Для верности запускаю проверку повторно - результат "Windows has checked the file system and found no problems."

Запускаю службу SQL Server (Агента пока не запускаю) - делаю checkdsk d: рез-т
Windows has checked the file system and found no problems.
запускаю 2-а приложения которые обращаются к интересующей БД рез-т
Windows has checked the file system and found no problems.
Запускаю агента и выполняю job по импорту експорту данных в БД рез-т
Windows has checked the file system and found no problems.

теперь делаю dbcc checkdb with no_infomsgs
заметьте все пред. проверки выдавали, что ошибок нет...

получаю:
chkdsk d:/i
The type of the file system is NTFS.
Volume label is Data.

WARNING! F parameter not specified.
Running CHKDSK in read-only mode.

WARNING! I parameter specified.
Your drive may still be corrupt even after running CHKDSK.

CHKDSK is verifying files (stage 1 of 3)...
1088768 file records processed.
File verification completed.
33 large file records processed.
0 bad file records processed.
0 EA records processed.
0 reparse records processed.
CHKDSK is verifying indexes (stage 2 of 3)...
215960 index entries processed.
Index verification completed.
5 unindexed files processed.
CHKDSK is verifying security descriptors (stage 3 of 3)...
1088768 security descriptors processed.
Security descriptor verification completed.
6873 data files processed.
Windows found problems with the file system.
Run CHKDSK with the /F (fix) option to correct these.

57239563 KB total disk space.
48133560 KB in 95667 files.
44684 KB in 6875 indexes.
0 KB in bad sectors.
1156619 KB in use by the system.
65536 KB occupied by the log file.
7904700 KB available on disk.

4096 bytes in each allocation unit.
14309890 total allocation units on disk.
1976175 allocation units available on disk.


Хорошо проигнорировались)
в итоге имеем что есть неверные ссылки на файлы БД? так что-ли ?
По информативности chkdsk конечно гениальная программа ... все ясно и понятно (мысли вслух)
Но валится она на 3-м шаге проверке security descriptors

Есть какие-нибудь мысли как проверить в чем все таки дело и насколько это критично?

p.s. 3-ю площадку проверял только что
11 мар 12, 13:18    [12225010]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить