Buscar este blog

lunes, 20 de mayo de 2013

Cuenta de servicios

Cuando instale un SQL Server 2000 R2 en un ambiente de desarrollo, el requeriemiento era instalar el servidor fuera del dominio.

Para eso tuve que crear doz cuentas de servicio una para el SQLService y otra para el SQLAgent.
Después de instalar todo correctamente, a los dias tuve el siguiente error:

1.- Primero no podia entrar al management Studio remotamente desde mi PC
2.- Entrando desde el servidor logeado con mi cuenta tampoco

Verificando en el SQL Server Configuration Manager todos los servicios estaban bajo.
No podia ser ya que el servicios se bajan manualmente.

El Problema
Otra área tuvo que reiniciar el servidor para tareas de mantenimiento, esto lo detecte en el ErrorLog.

Mensaje: SQL Server is terminating because of a system shutdown. This is an informational message only. No user action is required.
Mensaje: Service Broker manager has shut down.

Revisando las cuentas de servicio en Computer Management/User. Estaba tildada la opción 'user must change password at next logon'

Destildando esta opción y reseteando la password se soluciono el problema.

jueves, 9 de mayo de 2013

Eliminar o dar de Baja Jobs


Se borraron BD en desuso, el problema es que estas bases estuvieron operativas y productivas en su momento,
y cuando se dieron de baja no se tomo en cuenta los job y usuarios que accedian a las bases desde alguna app.

El error que encontre en el log era el siguiente:

2013-05-09 10:18:03.88 Logon       Error: 18456, Severity: 14, State: 38.
2013-05-09 10:18:03.88 Logon       Login failed for user 'dominio\xxxxx'. Reason: Failed to open the explicitly specified database. [CLIENT: xx.xxx.xx.xx]


1.- Lo primero es tirar un trace con SQL Server Profiler, seleccionando los eventos: Error Log y User Error Message. y tildando en todas las columnas para un mejor análisis.

2.- Después navegar por el trace e identificar los problemas del usuario 'dominio\xxxxx', una vez identificado es bastante facil.

--identifico si la base existe si no existe, voy al siguiente paso
select * from sys.databases
where name = 'basededato'


--Identifico el job en función a la base, copio el job_id voy al siguiente paso
select * from sysjobsteps


--Idenfico el nombre del job para darlo de baja.
select * from sysjobs
where job_id = '12B8956-2889-46VB-1212-BE456PO'