Mostrando entradas con la etiqueta plan de mantenimiento. Mostrar todas las entradas
Mostrando entradas con la etiqueta plan de mantenimiento. Mostrar todas las entradas

lunes, 21 de febrero de 2011

Renombrar instancia SQL Server

Por defecto (nombre del servidor:


sp_dropserver NombreServidorAntiguo
GO
sp_addserver NuevoNombreServidor, local
GO


Instancia

sp_dropserver NombreServfidorAntiguo\NombreInstanciaAntigua
GO
sp_addserver NombreservidorNuevo\NombreInstanciaNueva, local
GO


Clúster:

Usar el Adminitrador de Clúster:


Poner 'offline' SQL Server y volver a ponerlo de nuevo en linea.


En todos los casos, una vez cambiado el nombre verificar que haya funcionado

Select @@servername

Recordar que habrá que manualmente modificar los paquetes SSIS para actualizar conel nuevo nombre del servidor/instancia

Ejemplo de error:

  Description: Failed to acquire connection "Local server connection". Connection may not be configured correctly or you may not have the right permissions on this connection.  End Error  Warning: 2011-02-21 10:35:27.16     Code: 0x80019002     Source: OnPreExecute 


Hay un script que facilita las cosas. Está publicado en MSDN aunque ellos no lo crearan y se curen en salud diciendo que no admiten responsabilidades. funcionar funciona bien



use msdb
DECLARE @oldservername as varchar(max)
SET @oldservername='\'

-- set the new server name to the current server name
declare @newservername as varchar(max)
set @newservername=@@servername

declare @xml as varchar(max)
declare @packagedata as varbinary(max)
-- get all the plans that have the old server name in their connection string
DECLARE PlansToFix Cursor
FOR
SELECT    id
FROM         sysdtspackages90
WHERE     (CAST(CAST(packagedata AS varbinary(MAX)) AS varchar(MAX)) LIKE '%server=''' + @oldservername + '%')

OPEN PlansToFix


declare @planid uniqueidentifier
fetch next from PlansToFix into @planid
while (@@fetch_status<>-1)  -- for each plan

begin
if (@@fetch_status<>-2)
begin
select @xml=cast(cast(packagedata as varbinary(max)) as varchar(max)) from sysdtspackages90 where id= @planid  -- get the plan's xml converted to an xml string

declare @planname varchar(max)
select @planname=[name] from  sysdtspackages90 where id= @planid  -- get the plan name
print 'Changing ' + @planname + ' server from ' + @oldservername + ' to ' + @newservername  -- print out what change is happening

set @xml=replace(@xml,'server=''' + @oldservername + '''','server=''' + @newservername +'''')  -- replace the old server name with the new server name in the connection string
select @packagedata=cast(@xml as varbinary(max))  -- convert the xml back to binary
UPDATE    sysdtspackages90 SET packagedata = @packagedata WHERE (id= @planid)  -- update the plan

end
fetch next from PlansToFix into @planid  -- get the next plan

end

close PlansToFix
deallocate PlansToFix

 Más información:

cómo renombrar una instancia de SQL (inglés) 2008R2

Cómo renombrar una instancia 2005 (incluye scipts par amodificar SSIS)
Cómo renombrar un clúster

jueves, 4 de noviembre de 2010

Trabajos que no pueden ser borrados?

Los trabajos asociados a un plan de mantenimiento continúan ahí una vez borrado el plan. Al tratar de eliminarlos manualmente (ratón, botón derecho) SQL nos muestra:

Attempt to retrieve data for object failed for Server 'XXXXXX'.
(Microsoft.SqlServer.Smo)

The Job 'xxxxxx for DB Maintenance Plan 'xxxxxxx'
  does not exist on the server. (Microsoft.SqlServer.Smo)


SQL Server nos dice que estamos tratando de borrar algo que ya ha sido borrado cuando eliminamos el plan de mantenimiento. EM o Management Studio no refrescan automáticamente. F5 y habrán volado.


Un compañero estuvo hoy dándole vueltas toda la mañana. a este 'problema'  Ay si hubiera preguntado primero al dba!