PDA

Ver la Versión Completa : No puedo ejecutar un script (trabajo) en otro servidor...


Delphiboy
14-09-2005, 23:54:00
Hola foro, tengo un script de un "Trabajo" que hice en mi servidor local de SQL Server, este "Trabajo" hace una copia de mi b.d. lo quiero ejecutar en otra maquina para no volver a programar el "Trabajo" ,bien lo que hago es cargar el script y este me genera el "trabajo" pero cuando selecciono iniciar (en el trabajo) este se marca con una "X" y cambia su color a rojo.
El registro de los dos servidores esta como local, y el usuario en los dos es: 'sa' no entiendo porque no lo puedo ejecutar.
En el reporte que se genera dice lo siguiente:


Programa Microsoft (R) SQLMaint (Unicode), versi¢n Iniciada sesi¢n en el servidor SQL Server 'JZBECARIOSIS' como 'NT AUTHORITY\SYSTEM' (de confianza)
[Microsoft SQL-DMO] Error 21268: [SQL-DMO]La fila o columna especificada est fuera del intervalo del conjunto de resultados de consulta especificado.

Que puedo hacer ? :confused:

lucasarts_18
15-09-2005, 00:22:45
Programa Microsoft (R) SQLMaint (Unicode), versi¢n Iniciada sesi¢n en el servidor SQL Server 'JZBECARIOSIS' como 'NT AUTHORITY\SYSTEM' (de confianza)

Sobre esto, me da la impresión que estás entrando como usuario de Windows en ves de usuario de SQL Server, estás seguro que entrás con cuenta SA.

Por otra parte trata de poner todo el código del Script, así yo ó otro miembro del foro pueda ayudarte..

Delphiboy
15-09-2005, 16:37:18
Este es el codigo que me genera el "Trabajo" para el respaldo de la b.d.


-- Secuencia de comandos generada en 14/09/2005 12:58
-- Por: sa
-- Servidor: (LOCAL)
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'

-- Eliminar el trabajo con el mismo nombre (si existe)
SELECT @JobID = job_id
FROM msdb.dbo.sysjobs
WHERE (name = N'Copia de seguridad de base de datos para el plan de mantenimiento de base de datos ''Plan de mantenimiento de NPV''')
IF (@JobID IS NOT NULL)
BEGIN
-- Comprobar si el trabajo es un trabajo multiservidor
IF (EXISTS (SELECT *
FROM msdb.dbo.sysjobservers
WHERE (job_id = @JobID) AND (server_id <> 0)))
BEGIN
-- Así es, anular la secuencia de comandos
RAISERROR (N'No se puede importar el trabajo ''Copia de seguridad de base de datos para el plan de mantenimiento de base de datos ''Plan de mantenimiento de NPV'''' porque ya existe un trabajo multiservidor con este nombre.', 16, 1)
GOTO QuitWithRollback
END
ELSE
-- Eliminar el trabajo [local]
EXECUTE msdb.dbo.sp_delete_job @job_name = N'Copia de seguridad de base de datos para el plan de mantenimiento de base de datos ''Plan de mantenimiento de NPV'''
SELECT @JobID = NULL
END

BEGIN

-- Agregar el trabajo
EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'Copia de seguridad de base de datos para el plan de mantenimiento de base de datos ''Plan de mantenimiento de NPV''', @owner_login_name = N'sa', @description = N'No hay ninguna descripci¢n.', @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

-- Agregar los pasos del trabajo
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'Paso 1', @command = N'EXECUTE master.dbo.xp_sqlmaint N''-PlanID FAFFD6AE-3EDF-4585-95B0-D478B7A1D9CF -Rpt "C:\RESPALDOS\INFORME\Plan de mantenimiento de NPV4.txt" -DelTxtRpt 5MINUTES -WriteHistory -VrfyBackup -BkUpMedia DISK -BkUpDB "D:\RESPALDOS" -DelBkUps 10MINUTES -BkExt "BAK"''', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 4, @retry_attempts = 0, @retry_interval = 0, @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

-- Agregar las programaciones del trabajo
EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'Programaci¢n 1', @enabled = 1, @freq_type = 4, @active_start_date = 20050914, @active_start_time = 20000, @freq_interval = 1, @freq_subday_type = 4, @freq_subday_interval = 5, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

-- Agregar los servidores de destino
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:

ingel
06-10-2005, 15:38:14
quizas necesites que los servers esten 'VINCULADOS'
Saludos
Ingel