Имя: Пароль:
IT
Админ
Реиндексация базы SQL Server 2005 в автоматическом режиме
0 Молодой 1Снег
 
18.09.08
10:10
Есть здоровенная база SQL.
Каждый вечер стараюсь реиндексировать таким запросом:
sp_msforeachtable N'DBCC DBREINDEX (''?'')'

Запускать вручную надоело. Пытаюсь сделать запуск по расписанию, но не получается.
Создал файлик SQLQuery1.sql, с таким содержанием:

USE [1c81]
GO
sp_msforeachtable N'DBCC DBREINDEX (''?'')'
GO

Но при его запуске происходит остановка на окне подключения к базе. Подскажите, что добавить?
1 shachneff
 
18.09.08
10:11
(0) Job тебе нужен
2 d_Fedor
 
18.09.08
10:14
Не проще ли в Maintenance Plan автоматом все настроить?
3 ДенисЧ
 
18.09.08
10:16
reindex.bat:
sqlcmd -S MyServer -U MyUser -P MyPass -i reindex.sql

reindex.sql
USE [1c81]
GO
sp_msforeachtable N'DBCC DBREINDEX (''?'')'
GO

cmd.exe:
at \\SQLSERVER /every:mo,su,we,th,fr,su,st reindex.cmd
4 Молодой 1Снег
 
18.09.08
10:27
(3) А вот это зачем?
> cmd.exe:
> at \\SQLSERVER /every:mo,su,we,th,fr,su,st reindex.cmd
5 ДенисЧ
 
18.09.08
10:28
(4) чтобы каждый день запускалось автоматически
6 ДенисЧ
 
18.09.08
10:28
+5 там ещё время нужно проставить, но тут уж сам разберёшься
7 Молодой 1Снег
 
18.09.08
11:07
А если нужно использовать идентификацию Windows, а не -U
8 Молодой 1Снег
 
19.09.08
11:08
Сделал как в (3), но не показывается сам процесс. Т.е. висит черное окно и мигает курсорчик, а идет индексация или нет не понятно.
Эксперементировать над серваком никак нельзя!

А как Maintenance Plan запустить? Чето не найду.
9 ДенисЧ
 
19.09.08
11:10
(8) пишем вместо msforeachtable свой цикл с курсором по всем таблицам и PRINT'им имя таблицы.
10 Serg_1960
 
19.09.08
11:41
Сорри, может быть я не в теме

Сайт 1С, выдержка из статьи "Эффективность использования индексов Microsoft SQL Server"
Эту процедуру можно автоматизировать, написав скрипт на Transact-SQL, который будет исполнятся с требуемой периодичностью с помощью Microsoft SQL Server Agent.

Пример подобного скрипта оформленный в виде хранимой процедуры:

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

Аналогичный результат можно получит с помощью Database Maintenance Plan Wizard из SQL Server Enterprise Manager.
11 Молодой 1Снег
 
19.09.08
12:17
(10) ща покурю...
12 Мелкий бес
 
19.09.08
12:25
а я глупый, планы обслуживания из Management Studio пользую ...
13 Serg_1960
 
19.09.08
13:00
(12) Я совсем глюпий :) в очередной версии SQL - буду еще чего-нибудь "пользовать" :(
14 Молодой 1Снег
 
19.09.08
15:47
(12) я тоже в этом деле не особо шарю, но Планы обслуживания у меня не запускаются почемуто. ):

Ошибку выдает:

ЗАГОЛОВОК: Microsoft SQL Server Management Studio
------------------------------

Адресат вызова создал исключение. (mscorlib)

------------------------------
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:

Ошибка OLE DB 0x80004005 (Клиенту не удается установить связь) произошла при перечислении пакетов. Была вызвана инструкция SQL, завершившаяся ошибкой.

------------------------------
Ошибка OLE DB 0x80004005 (Клиенту не удается установить связь) произошла при перечислении пакетов. Была вызвана инструкция SQL, завершившаяся ошибкой.
15 Мелкий бес
 
19.09.08
15:56
агента запусти
16 Serg_1960
 
19.09.08
16:02
Сержант! Ты 1Снег или где? Смирно, ровняйсь на http://www.infostart.ru/profile/19413/projects/1463/
17 Молодой 1Снег
 
19.09.08
16:10
(16) Я всего лишь мл. сержант. До сержанта не дослужился. ;)
18 Александр_
Тверь
 
19.09.08
16:19
(14) такая ошибка возникает, когда в SQL 2005 не хватает одного из пакетов. Одно время сталкивался с такой проблемой.
Решил простым путем, поставил все :)
19 Serg_1960
 
19.09.08
16:20
(17) У меня давно уже по ночам "мелкий бес" по базам "шастает" - служебный пользователь запускается :) Почему не регламенты? Потому что у меня РИБ SQL-файловые версии. С недавнего времени этот "чертенок" стал и SQL-базу "обслуживать"...
20 Молодой 1Снег
 
19.09.08
16:28
У меня тоже ночью "демон" доки проводит. Вот хочу еще одного чтобы базу реиндексировал. А то после первого, поутру работать не возможно!
21 bVana
 
19.09.08
16:29
(0) а если не секрет  - "здоровенная" это сколько?
22 Молодой 1Снег
 
19.09.08
16:30
(21) на данный момент 36 Гб
23 Serg_1960
 
19.09.08
16:32
(20) Ну так демону и карты в руки. Наследил - убери :о)
24 Молодой 1Снег
 
19.09.08
16:35
(23) попытаюсь присандалить к нему обработку (16). Тока пока не совсем понял, чего она делает.
25 Serg_1960
 
19.09.08
16:46
(24) Обработка делает переиндексацию... Это я для примера привел. Посмотрите алгоритм - на его основе можно и другие "вещи" делать...