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'

martes, 12 de marzo de 2013

Configuración de la Tempdb - SQL Server 2008

CONFIGURACIÓN DE LA TEMPDB - SQL Server 2008

Para configurar la tempdb en un servidor de producción es necesario primero definir un recurso dedicado para la tempdb, un disco T:\ con el espacio suficiente para el procesamiento de datos.

La recomendacion de Microsoft es crear un file por CPU.

A continuación se define los pasos para configurar la Tempdb.


4.- En las propiedades de la base agregar:

Para el Data, de acuerdo a la cantidad de procesadores físicos. En el caso de cuatro procesadores:
Los temp 0,2,3,4 dividirlos con los MG asignados al disco de la tempdb.


templog (por defecto)
tempdev (por defecto)
tempdev2
tempdev3
tempdev4


Indicar la ruta donde van a estar los archivos.
Setear tamaño inicial de acuerdo al espacio en disco disponible para cada uno, incluyendo el log.

Oh hacerlo via comando.

USE [master]
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev', FILENAME = N'G:\MSSQL\Tempdb\tempdev.mdf' , SIZE = 10240KB , MAXSIZE = 2150400KB , FILEGROWTH = 10240KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev1', FILENAME = N'G:\MSSQL\Tempdb\tempdev1.ndf' , SIZE = 10240KB , MAXSIZE = 2150400KB , FILEGROWTH = 10240KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev2', FILENAME = N'G:\MSSQL\Tempdb\tempdev2.ndf' , SIZE = 10240KB , MAXSIZE = 2150400KB , FILEGROWTH = 10240KB )
GO
ALTER DATABASE [tempdb] ADD FILE ( NAME = N'tempdev3', FILENAME = N'G:\MSSQL\Tempdb\tempdev3.ndf' , SIZE = 10240KB , MAXSIZE = 2150400KB , FILEGROWTH = 10240KB )
GO
ALTER DATABASE [tempdb] MODIFY FILE ( NAME = N'templog', SIZE = 10240KB , MAXSIZE = 2150400KB )
GO


Nota:

Si quiero reconfigurar la tempdb, es decir si no se hizo la configuración inicial, y el servidor ya esta en producción.

1.- Reconfigurar la tempdb
2.- Bajar el tamaño inicial (si es necesario) y reiniciar el servicio del SQL, espero por un momento hasta que actualice y comienzo con los pasos ya mencionados.

viernes, 15 de febrero de 2013

Modificar Permisos en DTS

Los usuarios que necesitan tener permisos para ejecutar, modificar los DTS. En la versión SQL Server 2008 hay que modificar el sp de sistema 'sp_add_dtspackage' comentariar parte del sp. '/* */'

--// We will use the original owner_sid for all new versions - all must have the same owner.
 --// New packages will get the current login's SID as owner_sid.
 DECLARE @owner_sid VARBINARY(85)
 SELECT @owner_sid = MIN(owner_sid) FROM sysdtspackages WHERE id = @id
 IF @@rowcount = 0 OR @owner_sid IS NULL
 BEGIN
 SELECT @owner_sid = SUSER_SID()
 END /* ELSE BEGIN
 --// Only the owner of DTS Package ''%s'' or a member of the sysadmin role may create new versions of it.
 IF (@owner_sid <> SUSER_SID() AND (ISNULL(IS_SRVROLEMEMBER(N'sysadmin'), 0) <> 1))
 BEGIN
 RAISERROR (14586, -1, -1, @name)
 RETURN(1) -- Failure
 END
 END
 */

jueves, 14 de febrero de 2013

Provider OLE DB for Oracle

Uso de Provider OLE DB for Oracle para la ejecución de DTS.
 
Problematica.

Esto surge de la necesidad de ejecutar  DTS ubicado en un servidor SQL Server que apunta a un servidor Oracle. Los problemas a resolver eran los siguientes: migrar los dts del servidor origen a otro destino ambos SQL Server, encontrar el provider ole db for oracle.

Como se estaban migrando bases de datos de un servidor SQL Server 2008 a SQL Server 2008 R8 esto implicaba también migrar los 'dts' que a su vez estos dts apuntaban a servidores oracle 11g, 10g trayendo información de tablas y escribiendo sobre tablas de las bases del SQL Server.

1.- Migrar los DTS, para esto podemos usar el import/export, editar los dts y guardarlos o usar la herramienta DTSBackup2000.

2.- Instalar en el servidor SQL Server R8 las herramientas de dts.
Software download. http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=11988
  • SQLServer2005_BC.msi
  • SQLServer2005_DTS.msi
3.-  Después arreglar la ubicación de los archivos de instalación del paso 1, documentado en los siguientes link.

4.- Instalación de Provider Ole db for Oracle.
En la mayoria de la información que busque en Google, apuntaba a instalar 'ODAC1120320_x64' o  'win64_11gR2_client' de la página oficial de Oracle, estos driver son buenos para crear linked servers desde el SQL Server a Oracle pero no para los DTS.

Después de invertigar baje el instalador 'ODTwithODAC1120320_32bit'  que es el apropiado para los DTS que apuntan a Oracle.



domingo, 10 de febrero de 2013

SP_WHO Y KILL


SP_WHO 
Proporciona información acerca de los usuarios y procesos actuales de Microsoft® SQL Server™.      
La información obtenida puede filtrarse para devolver únicamente los procesos que no 
estén inactivos.

Ejemplo:
Muestra cómo ver información acerca de un usuario actual a partir de su nombre de inicio de sesión

sp_who 'sa'                           Para ver un login de un usuario debe estar con  '  ' 
sp_who2  active                    Para ver procesos activos
sp_who2  98                         Especificación id del proceso
dbcc inputbuffer(id_proceso) Para ver lo que hace el proceso
dbcc ouputbuffer (ic_proceso) ……………………………


KILL {spid}

Termina un proceso de usuario basado en el Id. de proceso del sistema (SPID). 
Si el SPID especificado tiene que deshacer mucho trabajo, puede que KILL requiera algún 
tiempo para completarse. Hay veces que al matar un proceso este se este ejecutando 
entonces realiza un rollback automático.

Ejemplo:

            kill 10            Elimina el proceso spid =10

SP DEL SISTEMAS

sp_configure
Para ver  y cambiar los parámetros de configuración de SQL Server 
sp_dboption
Para cambiar parámetros.
sp_spaceused
sp_helprotect
Informa de los permisos sobre un asegurable en el nivel de base de datos
sp_helplogins
 
Información sobre los Logines sp_helplogins 'NomLogin' o
sp_helplogins 'NomDominio\NomLogin'

sp_addlogin
SP_ADDLOGIN 'Usuario', 'Contraseña', 'Base de datos'
sp_helpgroup
funciones de la base de datos actual
sp_helprole
Para ver los roles
sp_statistics
Estadisticas de una tabla sp_statistics 'cliente'
sp_tables
Devuelve los objetos para consultar con la cláusula From
sp_lock
Proporciona información de los bloqueos
xp_logininfo
Informa de la cuenta, el tipo de cuenta, el nivel de privilegios de la cuenta, el nombre de inicio de sesión asociado de la cuenta y la ruta de los permisos mediante los que una cuenta tiene acceso a Microsoft® SQL Server™.                    xp_logininfo 'TRABAJO\IPACHECO'
sp_helpfile
 Devuelve los files del Data y Log
sp_helpdb
 Devuelve la lista de todas las bases de datos