El escenario ideal en la administración de base de datos para los casos de tamaño de las bases es saber el crecimiento que pueda tener la base en función del tiempo. Este es un dato que no pueden saber las áreas de desarrollo, ni las áreas de TI, por que el negocio puede tomar un rumbo no programado.
Tenemos que administrar el tamaño. La mejor opción es setear el crecimiento de la base en 100 MB como recomienda Microsoft, lo importante es tener un estandard para todas nuestras bases.
La base de datos por defecto se crea con dos grupos de archivos (FileGroup) el PRIMARY que contiene los archivos Data, y el No applicable donde contiene los archivos Log.
Después de 3 a 6 meses, podremos saber un crecimiento aproximado, setear nuestra base de datos
para que no crezca mas de lo que deseamos seteando los parámetros en las propiedades de base de datos.
Para servidores dedicados hay escenarios en el cual no se limita el crecimiento, esto se hace por conveniencia, puede facilitar la administración de las bases de datos.
Buscar este blog
martes, 29 de julio de 2014
sábado, 17 de mayo de 2014
Disco Quorum
Configuración del Disco Quorum importante para la creación del Cluster Server
Por qué es necesario el quórum
Los problemas de red pueden interferir en la comunicación entre los nodos de un clúster. Es posible que un grupo reducido de nodos pueda comunicarse entre sí a través de una parte en funcionamiento de la red, pero que no pueda comunicarse con un grupo de nodos diferente en otra parte de la red. Esto puede causar problemas graves. En esta situación de "división", al menos uno de los conjuntos de nodos debe dejar de ejecutarse como un clúster.
Para prevenir los problemas ocasionados por una división en el clúster, el software del clúster requiere que cualquier conjunto de nodos que se ejecute como un clúster debe usar un algoritmo de voto para determinar si, en un momento dado, ese conjunto dispone de quórum. Puesto que el clúster especificado tiene un conjunto específico de nodos y una configuración de quórum específica, el clúster sabrá la cantidad de "votos" necesaria para constituir una mayoría (es decir, quórum). Si el número cae por debajo de la mayoría, el clúster deja de funcionar. Los nodos seguirán detectando la presencia de otros nodos, en el caso de que otro nodo aparezca de nuevo en la red, pero no empezarán a funcionar como un clúster hasta que vuelva a existir quórum.
Por ejemplo, en un clúster de cinco nodos que usa una mayoría de nodos, tenga en consideración lo que ocurriría si los nodos 1, 2 y 3 pudieran comunicarse entre sí pero no con los nodos 4 y 5. Los nodos 1, 2 y 3 constituyen una mayoría y siguen ejecutándose como un clúster. Los nodos 4 y 5, al ser minoría, dejan de ejecutarse como un clúster. Si el nodo 3 pierde la comunicación con el resto de nodos, todos los nodos dejan de ejecutarse como un clúster. Sin embargo, todos los nodos en funcionamiento continuarán recibiendo comunicación, por lo que, cuando la red vuelve a funcionar, el clúster puede formarse y empezar a ejecutarse.
Biografia:
http://technet.microsoft.com/es-es/library/cc731739.aspx
Memoria SQL Server 2005
Un mínimo de 512 MB de memoria RAM para ediciones Standar y Entreprise. Para ediciones de 64 bits la recomendación es de 1 GB de RAM.
Microsoft recomienda agregar un adicional del doble de esta memoria, hay que tomar en cuenta los 256 MB que usa el S.O. Esto ayuda al desempeño.
jueves, 20 de febrero de 2014
Linked Server a ORACLE
Para realizar un Linked server desde el SQL Server 2008 R2 a Oracle 11g. debemos serguir los siguientes pasos:
1.- Instalar el cliente Oracle en el servidor SQL Server, buscar en la página de Oracle, como recomendación es mejor bajar la ultima version.
2.- Reiniciar el servidor SQL Server donde se instalo en cliente de Oracle
3.- Configurar el tns name con conexion string
Ej: tnsname con el conexión string de la base a Oracle donde vamos a crear el Linked Server
PXT11G=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=100.12.44.0)
(PORT=1234)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=PXT11G)
)
)
4.- Crear usuario en la base de Oracle
5.- Crear el linked Server
1.- Instalar el cliente Oracle en el servidor SQL Server, buscar en la página de Oracle, como recomendación es mejor bajar la ultima version.
2.- Reiniciar el servidor SQL Server donde se instalo en cliente de Oracle
3.- Configurar el tns name con conexion string
Ej: tnsname con el conexión string de la base a Oracle donde vamos a crear el Linked Server
PXT11G=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST=100.12.44.0)
(PORT=1234)
)
(CONNECT_DATA=
(SERVER=dedicated)
(SERVICE_NAME=PXT11G)
)
)
4.- Crear usuario en la base de Oracle
5.- Crear el linked Server
/****** Object:
LinkedServer [PRUEBA] Script
Date: 10/01/2012 12:55:26 ******/
EXEC master.dbo.sp_addlinkedserver @server = N'PRUEBA',
@srvproduct=N'ORACLE',
@provider=N'OraOLEDB.Oracle', @datasrc=N'PXT11G'
/* For security
reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'PRUEBA',@useself=N'False',@locallogin=NULL,@rmtuser=N'PASS',@rmtpassword='WORD'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'dist', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'pub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'rpc', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'rpc out', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'sub', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'lazy schema validation', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'use remote collation', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'PRUEBA',
@optname=N'remote proc transaction promotion', @optvalue=N'true'
GO
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.
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.
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.
Suscribirse a:
Entradas (Atom)