Re: Afinamiento...

09/05/2006 - 00:42 por Edmundo J. Davila | Informe spam
Hola Miguel,

Gracias por tu respuesta y gracias tambien a todas las personas que han
hecho sus aportes.

Segun mi lógica pienso que si hago un backup completo de la BD pues no
tendria mucho sentido tener un log extremadamente grande, por lo tanto
cambie el mecanismo de registro en el log de full a simple. Aunque por
seguridad comprendo que mantener el mayor registro de transacciones en el
log, podria ser lo mas ideal. Tambien me parece muy interesante lo que dices
sobre la fragmentacion y tal vez sea una de las causas del bajo performance,
pues nunca se han desfragmentado los discos del server. A proposito,
¿recomiendas que haga esto con la herramienta que incluye windows o hay
alguna otra mejor?

Un colega y yo estamos convencidos de la que la aplicacion tiene una
sobrecarga de indices que no son necesarios, pero como ya dije en mi primer
mail, no podemos meternos en el diseño de la misma por ser de terceros y no
disponer del codigo (creo tambien que borrar algunos indices podria ser
arriesgado). Pero a simple vista podemos apreciar que hay tablas altamente
transaccionales como detalles de factura o detalles de asientos contables
que tienen mas de 12 indices, y son tablas con varios millones de registro,
y seguramente esta cantidad de indices impactará en el rendimiento de la
aplicación.

Respondiendo a Eladio, les mando el resultado (en una attachment) de la
instruccion dbcc sqlperf (waitstats) a ver si pueden detectar alguna
anormalidad.

Nuevamente muchas gracias por sus comentarios y quedo a la espera de futuros
aportes que pudieran ayudarme.

Saludos,

Edmundo J. Davila

"Miguel Egea" <miguel@QUITAONLINE.sqlu.com> escribió en el mensaje
news:OcMyIJpcGHA.1272@TK2MSFTNGP03.phx.gbl...

Bueno Edmundo, aquí he puesto un pequeño artículo en el que explico porqué
no me gusta el shrink
http://www.configuracionesintegrale...articulo10

Saludos
Miguel Egea
"Miguel Egea" <miguel@QUITAONLINE.sqlu.com> escribió en el mensaje
news:%236qlAuocGHA.464@TK2MSFTNGP05.phx.gbl...

No edmndo, no trunques el log, no le hagas shrink ?porque has de
hacerselo?, voy a ver si escribo un artículo para portalsql con estas
recomendaciones.

De todas formas 11 GB es una base de datos pequeña, y debería sobrarte
con
el server que tienes, tendrás que buscar consultas agresivas, pon una
traza de profiler que te caze todas las consultas con duración mayor que
500 y de las 5 o 6 que más se repitan postea alguna aquí a ver si te
ayudamos a optimizar esto.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Edmundo J. Davila" <edavila@monisa.com> escribió en el mensaje
news:Olc%23mCJcGHA.3472@TK2MSFTNGP02.phx.gbl...

Isaias,

Son 11 GB de datos, aunque el dispositivo tiene solamente 10 GB ocupados
y casi 2GB vacios, pese a que he hecho shrink de la BD. El job siempre
se mantiene al minimo porque se hacen 2 Backups completos de la BD en el
dia y antes de hacerlos "shrinkeo" y trunco el log. Las estadisticas en
el server estan configuradas para actualizarse de forma automatica. No
hay un plan de mantenmiento como tal, sin embargo, el job lo que hace
son
todos los pasos del plan de mantenimiento, pero para no tenerlos por
separados los puse en un solo job con varios pasos.
Pero los pasos incluyen:

1. Backup del log
2. Shrink del log
3. Truncate del log
4. Chequeo de integridad
5. Optimizacion, rescontruccion de indices y correcion de problemas
menores
6. Respaldo completo de la BD

El asunto que yo pense que por reconstruir indices y optimizar diario
iba
a notar alguna mejoria significativa en el rendimiento de la aplicacion
y
no ha sido asi.



"Isaias" <Isaias@discussions.microsoft.com> escribió en el mensaje
news:855540F1-099D-42A3-99E2-15DC7E893A49@microsoft.com...

Dices que tiene 11 GB, ¿en Datos, en Log?, ¿Tienes un PLAN DE
MANTENIMIENTO?,
¿Depuras el Log de transacciones?, ¿Se generan en AUTOMATICO tus
estadisticos?
Saludos
IIslas


"Edmundo J. Davila" escribió:


Estimad@s colegas,

Tengo una base con un nivel transaccional elevado (tiene 11 GB) y una
cantidad de indices en tablas altamente transaccionales que en mi
opinion es
exagerado. Esta base de datos es de una aplicacion comercial de
terceros,
por lo que borrar algunos indices que en mi opinion no son tan
relevantes,
me parece una alternativa arriesgada. En mi servidor tengo windows
2000
server y sql server 2000 ent. edi. El servidor tiene 2 procesadores
xeon de
3.6GHZ y 2GB de RAM, tengo implementado un raid 1 con 2 DD de 36.4 GB.
Este
Raid tiene 2 unidades logicas, una para el SO y otra para la BD.

Para mejorar el rendimiento de la aplicacion, optamos por crear un job
que
se ejecuta diariamente para reconstruir indices con un fill factor del
80% y
tambien realiza un chequeo de integridad. Mi pregunta es que tan
recomendable es reconstruir indices diariamente y que tanto pueden
afectarse
las estadisticas de uso en el servidor, de tal forma que impacte en el
rendimiento de la aplicacion, ya que apartir de la ejecucion diaria de
este
job no se han sentido mejoras significativas.

Adjunto script del job por si les sirve para analizarlo. De antemano
gracias por sus comentarios.

Edmundo J. Davila



BEGIN TRANSACTION
DECLARE @JobID BINARY(16)
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name =
N'Database
Maintenance') < 1
EXECUTE msdb.dbo.sp_add_category @name = N'Database Maintenance'

SELECT @JobID = job_id
FROM msdb.dbo.sysjobs
WHERE (name = N'EXACTUS - Mantenimiento diario')
IF (@JobID IS NOT NULL)
BEGIN
IF (EXISTS (SELECT *
FROM msdb.dbo.sysjobservers
WHERE (job_id = @JobID) AND (server_id <> 0)))
BEGIN
RAISERROR (N'Unable to import job ''EXACTUS - Mantenimiento
diario''
since there is already a multi-server job with this name.', 16, 1)
GOTO QuitWithRollback
END
ELSE
EXECUTE msdb.dbo.sp_delete_job @job_name = N'EXACTUS -
Mantenimiento
diario'
SELECT @JobID = NULL
END

BEGIN

EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT ,
@job_name = N'EXACTUS - Mantenimiento diario', @owner_login_name >>>>> N'MONISAIII\Administrator', @description = N'No description
available.',
@category_name = N'Database Maintenance', @enabled = 1,
@notify_level_email
= 0, @notify_level_page = 0, @notify_level_netsend = 0,
@notify_level_eventlog = 2, @delete_level= 0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>> 1, @step_name = N'LOG BACKUP', @command = N'BACKUP LOG [Exactus]
TO DISK = N''E:\Respaldo2K\ExactusBK''
WITH NOINIT , NOUNLOAD , NAME = N''Exactus Log backup'',
NOSKIP , STATS = 10, NOFORMAT', @database_name = N'master', @server
>>>>> N'',
@database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>> N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id
= 4,
@on_fail_action = 4
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>> 2, @step_name = N'LOG TRUNCATE', @command = N'BACKUP LOG Exactus
WITH TRUNCATE_ONLY', @database_name = N'master', @server = N'',
@database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>> N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id
= 4,
@on_fail_action = 4
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>> 3, @step_name = N'LOG SHRINK', @command = N'dbcc shrinkfile
(''Exactus_db_log'', 100)', @database_name = N'Exactus', @server =
N'',
@database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>> N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id
= 4,
@on_fail_action = 4
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>> 4, @step_name = N'INTEGRITY CHECK WITH REPAIR OF MINOR ERRORS',
@command >>>>> N'use master

alter database exactus set SINGLE_USER
WITH ROLLBACK IMMEDIATE

DBCC CHECKDB( ''exactus'', REPAIR_FAST)

alter database exactus set MULTI_USER
with ROLLBACK IMMEDIATE
', @database_name = N'master', @server = N'', @database_user_name >>>>> N'',
@subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0,
@retry_attempts
= 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id
= 0,
@on_success_action = 3, @on_fail_step_id = 0, @on_fail_action = 3
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>> 5, @step_name = N'OPTIMIZATION. INDEX REBUILD', @command = N'EXECUTE
master.dbo.xp_sqlmaint N''-D Exactus -WriteHistory -RebldIdx
15 -RmUnusedSpace 50 10 ''', @database_name = N'master', @server =
N'',
@database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>> N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id
= 0,
@on_fail_action = 3
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>> 6, @step_name = N'COMPLETE DB BACKUP', @command = N'BACKUP DATABASE
[Exactus]
TO DISK = N''E:\Respaldo2K\ExactusBK''
WITH INIT , NOUNLOAD ,
NAME = N''Exactus backup'', NOSKIP ,
STATS = 10, NOFORMAT', @database_name = N'master', @server = N'',
@database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>> N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id
= 0,
@on_fail_action = 3
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>> 7, @step_name = N'TURN OFF THE SERVER', @command = N'Set wmi >>>>> GetObject("winmgmts:{(Shutdown)}//./root/cimv2")
set objset = wmi.instancesof("win32_operatingsystem")
for each obj in objset
set os = obj : exit for
next

os.win32shutdown (8)', @database_name = N'VBScript', @server = N'',
@database_user_name = N'', @subsystem = N'ActiveScripting',
@cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0,
@retry_interval
= 1, @output_file_name = N'', @on_success_step_id = 0,
@on_success_action >>>>> 1, @on_fail_step_id = 0, @on_fail_action = 2
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID,
@start_step_id = 1

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID,
@name
= N'Diario', @enabled = 1, @freq_type = 8, @active_start_date >>>>> 20060428,
@active_start_time = 213000, @freq_interval = 62, @freq_subday_type >>>>> 1,
@freq_subday_interval = 0, @freq_relative_interval = 0,
@freq_recurrence_factor = 1, @active_end_date = 99991231,
@active_end_time >>>>> 235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID,
@server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:


















Preguntas similare

Leer las respuestas

#1 Miguel Egea
09/05/2006 - 10:14 | Informe spam
Cambiar el backup del log de full a simple implica que ante un desastre solo
podrás recuperar tu ultima de copia de seguridad completa buena, pero si
para ti es suficiente

No suele ser un problema que hayan muchos índices, eso solamente penaliza
algo las escrituras, aunque claro, todo cuenta. En las bases de datos bien
indexadas normalmente ocupan más los índices que los datos, al menos en
todas la que yo he dejado después de un proceso de optimización.

Sobre SQLPerf eladio ya te ha comentado, así que creo que dejamos
contestadas las dudas :)

"Edmundo J. Davila" escribió en el mensaje
news:%

Hola Miguel,

Gracias por tu respuesta y gracias tambien a todas las personas que han
hecho sus aportes.

Segun mi lógica pienso que si hago un backup completo de la BD pues no
tendria mucho sentido tener un log extremadamente grande, por lo tanto
cambie el mecanismo de registro en el log de full a simple. Aunque por
seguridad comprendo que mantener el mayor registro de transacciones en el
log, podria ser lo mas ideal. Tambien me parece muy interesante lo que
dices sobre la fragmentacion y tal vez sea una de las causas del bajo
performance, pues nunca se han desfragmentado los discos del server. A
proposito, ¿recomiendas que haga esto con la herramienta que incluye
windows o hay alguna otra mejor?

Un colega y yo estamos convencidos de la que la aplicacion tiene una
sobrecarga de indices que no son necesarios, pero como ya dije en mi
primer mail, no podemos meternos en el diseño de la misma por ser de
terceros y no disponer del codigo (creo tambien que borrar algunos indices
podria ser arriesgado). Pero a simple vista podemos apreciar que hay
tablas altamente transaccionales como detalles de factura o detalles de
asientos contables que tienen mas de 12 indices, y son tablas con varios
millones de registro, y seguramente esta cantidad de indices impactará en
el rendimiento de la aplicación.

Respondiendo a Eladio, les mando el resultado (en una attachment) de la
instruccion dbcc sqlperf (waitstats) a ver si pueden detectar alguna
anormalidad.

Nuevamente muchas gracias por sus comentarios y quedo a la espera de
futuros aportes que pudieran ayudarme.

Saludos,

Edmundo J. Davila

"Miguel Egea" escribió en el mensaje
news:
Bueno Edmundo, aquí he puesto un pequeño artículo en el que explico
porqué
no me gusta el shrink
http://www.configuracionesintegrale...articulo10

Saludos
Miguel Egea
"Miguel Egea" escribió en el mensaje
news:%
No edmndo, no trunques el log, no le hagas shrink ?porque has de
hacerselo?, voy a ver si escribo un artículo para portalsql con estas
recomendaciones.

De todas formas 11 GB es una base de datos pequeña, y debería sobrarte
con
el server que tienes, tendrás que buscar consultas agresivas, pon una
traza de profiler que te caze todas las consultas con duración mayor que
500 y de las 5 o 6 que más se repitan postea alguna aquí a ver si te
ayudamos a optimizar esto.


Miguel Egea Gómez

SQLServer MVP

Director de Servicios Corporativos

Solid Quality Learning Iberoamericana



"Solid Quality Learning es el proveedor global en el que puede confiar
para obtener soluciones y educación avanzada para la plataforma completa
de sistemas de bases de datos de Microsoft."

www.SolidQualityLearning.com

"Edmundo J. Davila" escribió en el mensaje
news:Olc%
Isaias,

Son 11 GB de datos, aunque el dispositivo tiene solamente 10 GB
ocupados
y casi 2GB vacios, pese a que he hecho shrink de la BD. El job siempre
se mantiene al minimo porque se hacen 2 Backups completos de la BD en
el
dia y antes de hacerlos "shrinkeo" y trunco el log. Las estadisticas en
el server estan configuradas para actualizarse de forma automatica. No
hay un plan de mantenmiento como tal, sin embargo, el job lo que hace
son
todos los pasos del plan de mantenimiento, pero para no tenerlos por
separados los puse en un solo job con varios pasos.
Pero los pasos incluyen:

1. Backup del log
2. Shrink del log
3. Truncate del log
4. Chequeo de integridad
5. Optimizacion, rescontruccion de indices y correcion de problemas
menores
6. Respaldo completo de la BD

El asunto que yo pense que por reconstruir indices y optimizar diario
iba
a notar alguna mejoria significativa en el rendimiento de la aplicacion
y
no ha sido asi.



"Isaias" escribió en el mensaje
news:
Dices que tiene 11 GB, ¿en Datos, en Log?, ¿Tienes un PLAN DE
MANTENIMIENTO?,
¿Depuras el Log de transacciones?, ¿Se generan en AUTOMATICO tus
estadisticos?
Saludos
IIslas


"Edmundo J. Davila" escribió:

colegas,

Tengo una base con un nivel transaccional elevado (tiene 11 GB) y una
cantidad de indices en tablas altamente transaccionales que en mi
opinion es
exagerado. Esta base de datos es de una aplicacion comercial de
terceros,
por lo que borrar algunos indices que en mi opinion no son tan
relevantes,
me parece una alternativa arriesgada. En mi servidor tengo windows
2000
server y sql server 2000 ent. edi. El servidor tiene 2 procesadores
xeon de
3.6GHZ y 2GB de RAM, tengo implementado un raid 1 con 2 DD de 36.4
GB.
Este
Raid tiene 2 unidades logicas, una para el SO y otra para la BD.

Para mejorar el rendimiento de la aplicacion, optamos por crear un
job
que
se ejecuta diariamente para reconstruir indices con un fill factor
del
80% y
tambien realiza un chequeo de integridad. Mi pregunta es que tan
recomendable es reconstruir indices diariamente y que tanto pueden
afectarse
las estadisticas de uso en el servidor, de tal forma que impacte en
el
rendimiento de la aplicacion, ya que apartir de la ejecucion diaria
de
este
job no se han sentido mejoras significativas.

Adjunto script del job por si les sirve para analizarlo. De antemano
gracias por sus comentarios.

Edmundo J. Davila



BEGIN TRANSACTION
DECLARE @JobID BINARY(16)
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name =
N'Database
Maintenance') < 1
EXECUTE msdb.dbo.sp_add_category @name = N'Database Maintenance'

SELECT @JobID = job_id
FROM msdb.dbo.sysjobs
WHERE (name = N'EXACTUS - Mantenimiento diario')
IF (@JobID IS NOT NULL)
BEGIN
IF (EXISTS (SELECT *
FROM msdb.dbo.sysjobservers
WHERE (job_id = @JobID) AND (server_id <> 0)))
BEGIN
RAISERROR (N'Unable to import job ''EXACTUS - Mantenimiento
diario''
since there is already a multi-server job with this name.', 16, 1)
GOTO QuitWithRollback
END
ELSE
EXECUTE msdb.dbo.sp_delete_job @job_name = N'EXACTUS -
Mantenimiento
diario'
SELECT @JobID = NULL
END

BEGIN

EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT ,
@job_name = N'EXACTUS - Mantenimiento diario', @owner_login_name >>>>>> N'MONISAIII\Administrator', @description = N'No description
available.',
@category_name = N'Database Maintenance', @enabled = 1,
@notify_level_email
= 0, @notify_level_page = 0, @notify_level_netsend = 0,
@notify_level_eventlog = 2, @delete_level= 0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>>> 1, @step_name = N'LOG BACKUP', @command = N'BACKUP LOG [Exactus]
TO DISK = N''E:\Respaldo2K\ExactusBK''
WITH NOINIT , NOUNLOAD , NAME = N''Exactus Log backup'',
NOSKIP , STATS = 10, NOFORMAT', @database_name = N'master', @server
>>>>>> N'',
@database_user_name = N'', @subsystem = N'TSQL',
@cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>>> N'', @on_success_step_id = 0, @on_success_action = 3,
@on_fail_step_id
= 4,
@on_fail_action = 4
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>>> 2, @step_name = N'LOG TRUNCATE', @command = N'BACKUP LOG Exactus
WITH TRUNCATE_ONLY', @database_name = N'master', @server = N'',
@database_user_name = N'', @subsystem = N'TSQL',
@cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>>> N'', @on_success_step_id = 0, @on_success_action = 3,
@on_fail_step_id
= 4,
@on_fail_action = 4
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>>> 3, @step_name = N'LOG SHRINK', @command = N'dbcc shrinkfile
(''Exactus_db_log'', 100)', @database_name = N'Exactus', @server =
N'',
@database_user_name = N'', @subsystem = N'TSQL',
@cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>>> N'', @on_success_step_id = 0, @on_success_action = 3,
@on_fail_step_id
= 4,
@on_fail_action = 4
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>>> 4, @step_name = N'INTEGRITY CHECK WITH REPAIR OF MINOR ERRORS',
@command >>>>>> N'use master

alter database exactus set SINGLE_USER
WITH ROLLBACK IMMEDIATE

DBCC CHECKDB( ''exactus'', REPAIR_FAST)

alter database exactus set MULTI_USER
with ROLLBACK IMMEDIATE
', @database_name = N'master', @server = N'', @database_user_name >>>>>> N'',
@subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0,
@retry_attempts
= 0, @retry_interval = 1, @output_file_name = N'',
@on_success_step_id
= 0,
@on_success_action = 3, @on_fail_step_id = 0, @on_fail_action = 3
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>>> 5, @step_name = N'OPTIMIZATION. INDEX REBUILD', @command = N'EXECUTE
master.dbo.xp_sqlmaint N''-D Exactus -WriteHistory -RebldIdx
15 -RmUnusedSpace 50 10 ''', @database_name = N'master', @server =
N'',
@database_user_name = N'', @subsystem = N'TSQL',
@cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>>> N'', @on_success_step_id = 0, @on_success_action = 3,
@on_fail_step_id
= 0,
@on_fail_action = 3
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>>> 6, @step_name = N'COMPLETE DB BACKUP', @command = N'BACKUP DATABASE
[Exactus]
TO DISK = N''E:\Respaldo2K\ExactusBK''
WITH INIT , NOUNLOAD ,
NAME = N''Exactus backup'', NOSKIP ,
STATS = 10, NOFORMAT', @database_name = N'master', @server = N'',
@database_user_name = N'', @subsystem = N'TSQL',
@cmdexec_success_code
= 0,
@flags = 0, @retry_attempts = 0, @retry_interval = 1,
@output_file_name
>>>>>> N'', @on_success_step_id = 0, @on_success_action = 3,
@on_fail_step_id
= 0,
@on_fail_action = 3
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID,
@step_id >>>>>> 7, @step_name = N'TURN OFF THE SERVER', @command = N'Set wmi >>>>>> GetObject("winmgmts:{(Shutdown)}//./root/cimv2")
set objset = wmi.instancesof("win32_operatingsystem")
for each obj in objset
set os = obj : exit for
next

os.win32shutdown (8)', @database_name = N'VBScript', @server = N'',
@database_user_name = N'', @subsystem = N'ActiveScripting',
@cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0,
@retry_interval
= 1, @output_file_name = N'', @on_success_step_id = 0,
@on_success_action >>>>>> 1, @on_fail_step_id = 0, @on_fail_action = 2
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID,
@start_step_id = 1

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID,
@name
= N'Diario', @enabled = 1, @freq_type = 8, @active_start_date >>>>>> 20060428,
@active_start_time = 213000, @freq_interval = 62, @freq_subday_type >>>>>> 1,
@freq_subday_interval = 0, @freq_relative_interval = 0,
@freq_recurrence_factor = 1, @active_end_date = 99991231,
@active_end_time >>>>>> 235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID,
@server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:






















email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida