art.andr
05-10-2012, 13:40
Добрый день!
Ситуация следующая:
имеется
- windows server 2008 enterprise SP2 32-разрядный. Xeon E5410 2.33GHz (2 процессора), 16 Gb оперативки
- MS SQL Server 2008
- 1С 8.2.15.301
- Дисковая полка с 4 HDD 7200 rpm в raid10, где лежат базы 1С
Все было прекрасно, но после перехода на 1С 8.2 начались дикие тормоза в 1С. Покопавшись в интернете, наткнулся на массу схожих проблем, но в большинстве случаев совет по решению один: накатываем win serv 2008 x64 и 64-битную версию 1С. В моем случае это неприменимо, т.к. денег на 64-битную 1С-ку не дают. Причем 1С тормозит не только на удаленных машинах, но и на сервере, что вызывает подозрения в том, что дело в MS SQL Server. Стал копать, наткнулся на некий процесс оптимизации таблиц в SQL:
- Переиндексация таблиц БД командой DBCC DBREINDEX (table_name)
- Дефрагментация индексов БД командой DBCC INDEXDEFRAG (db_name, table_name, index_name)
И далее пример:
CREATE PROCEDURE DBReindex AS
SET NOCOUNT ON
DECLARE @TableName char(32)
DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE type='U'
OPEN SysCur
FETCH NEXT FROM SysCur INTO @TableName
WHILE @@FETCH_STATUS=0 BEGIN
DBCC DBREINDEX (@TableName)
FETCH NEXT FROM SysCur INTO @TableName
END
CLOSE SysCur
DEALLOCATE SysCur
Т.к. я не силен в Transact-SQL просьба объяснить, что данный скрипт делает, и как его натравить на конкретную базу данных
Ситуация следующая:
имеется
- windows server 2008 enterprise SP2 32-разрядный. Xeon E5410 2.33GHz (2 процессора), 16 Gb оперативки
- MS SQL Server 2008
- 1С 8.2.15.301
- Дисковая полка с 4 HDD 7200 rpm в raid10, где лежат базы 1С
Все было прекрасно, но после перехода на 1С 8.2 начались дикие тормоза в 1С. Покопавшись в интернете, наткнулся на массу схожих проблем, но в большинстве случаев совет по решению один: накатываем win serv 2008 x64 и 64-битную версию 1С. В моем случае это неприменимо, т.к. денег на 64-битную 1С-ку не дают. Причем 1С тормозит не только на удаленных машинах, но и на сервере, что вызывает подозрения в том, что дело в MS SQL Server. Стал копать, наткнулся на некий процесс оптимизации таблиц в SQL:
- Переиндексация таблиц БД командой DBCC DBREINDEX (table_name)
- Дефрагментация индексов БД командой DBCC INDEXDEFRAG (db_name, table_name, index_name)
И далее пример:
CREATE PROCEDURE DBReindex AS
SET NOCOUNT ON
DECLARE @TableName char(32)
DECLARE SysCur CURSOR FOR SELECT name FROM sysobjects WHERE type='U'
OPEN SysCur
FETCH NEXT FROM SysCur INTO @TableName
WHILE @@FETCH_STATUS=0 BEGIN
DBCC DBREINDEX (@TableName)
FETCH NEXT FROM SysCur INTO @TableName
END
CLOSE SysCur
DEALLOCATE SysCur
Т.к. я не силен в Transact-SQL просьба объяснить, что данный скрипт делает, и как его натравить на конкретную базу данных