Desactivando Jobs de SQL Server

March 4th, 2010 CarlosBrown No comments

En mi empresa, queremos cerrar un servidor SQL Server 2000 con un DWH, pero es el típico servidor que lleva montado muchísimo tiempo y el desarrollador ya no esta en la empresa, y la gente no sabe como va. Así que se ha decidido montar uno nuevo (ya con SQL 2008..a si que es un BI :D). Pero claro, ahora toca apagar este servidor y como nadie sabe a ciencia cierta que es lo que puede pasar hemos decidido hacerlo poco a poco.

Primer paso: Evitar que los jobs se puedan lanzar, pero no apagamos el SQL Server Agent, para ver que usuarios intentan lanzarlo así podremos desactivarlo todo. Así que me voy al Enterprise Manager y me encuentro con mas de 500 jobs creados por ahí.. así que toca tirar de TSQL para tener que estar todo el día desactivando Jobs.

1 – Miramos que Jobs están Activos (Enabled)

USE MSDB
SELECT * FROM SYSJOBS WHERE ENABLED=1

Estos query la sacamos por el Query Analyzer y la exportamos a un fichero.

2 – Desactivamos los Jobs Activos (Enabled)

USE MSDB
UPDATE SYSJOBS SET ENABLED=0 WHERE ENABLED=1

Ahora ningun Job esta Activo, podemos hacer lo mismo para las programaciones (Schedules)

USE MSDB
SELECT * FROM SYSJOBSCHEDULES WHERE ENABLED=1

Copiamos el resultado para tener una copia

Desactivamos las programaciones (Schedules)

USE MSDB
UPDATE SYSJOBSCHEDULES SET ENABLED=0 WHERE ENABLED=1

Espero que os sea de utilidad

Categories: SQL Server Tags:

Configurar Apache HTTP Server para validar seguridad contra AD

January 20th, 2010 CarlosBrown 2 comments

Recientemente he tenido que participar en un proyecto sobre configuración de Apache HTTP Server contra AD y con seguridad SSL.

Lo que más ha costado ha sido configurarlo contra el AD, dado que hay mucha documentación de LDAP pero no hay ninguna que hable de Active Directory. Al final he encontrado la solución…

He modificado el fichero httpd.conf con lo siguiente (Se podria haber creado un fichero .htcaccess en el directorio a proteger, pero se decidio tenerlo todo en el httpd.conf.


AuthBasicProvider ldap
AuthType Basic
AuthName "Area protegida por Permisos de Active Directory"
AuthLDAPURL "ldap://DOMINIO.COM:389/DC=DOMINIO,DC=COM?sAMAccountName?sub?(objectClass=user)" NONE
AuthLDAPBindDN "USUARIO@DOMINIO.COM"
AuthLDAPBindPassword "PASSWORDDELUSUARIOANTERIOR"
require ldap-attribute objectClass=user

Lo malo que tiene es que tienes que poner un usuario y un password para poder validar contra el Active Directory, en otros LDAPs parece que no es necesario. He probado a no ponerlo y no valida.

Si alguien tiene alguna mejora sobre esto, por favor que lo ponga.. :wink_ee:

Reorganizar TODOS los Indices de TODAS las Bases de Datos

December 4th, 2009 CarlosBrown 2 comments

Os paso un script para reorganizar todos los indices de todas las bds de un servidor SQL Server 2008

DECLARE @sentencia AS VARCHAR(MAX)
SET @sentencia = 'DECLARE @tabla sysname
DECLARE contTabla CURSOR LOCAL FOR SELECT name FROM 
sysobjects WHERE OBJECTPROPERTY(id,N''IsUserTable'')=1
OPEN contTabla
   FETCH NEXT FROM contTabla INTO @tabla
   WHILE @@FETCH_STATUS=0
   BEGIN
      SET NOCOUNT ON
      DBCC DBREINDEX(@tabla,'''',0) WITH NO_INFOMSGS
      FETCH NEXT FROM contTabla INTO @tabla
   END
CLOSE contTabla
DEALLOCATE contTabla'
 
exec sp_msforeachdb @sentencia
Categories: SQL Server Tags:

Manifiesto: En defensa de los derechos fundamentales en Internet

December 3rd, 2009 CarlosBrown No comments

Para saber de qué va esto, y por qué es importante ahora, recomiendo leer este post de Nacho Escolar.
Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…

1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.
2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.
3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.
4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.
5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.
6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.
7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.
8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.
9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.
10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

Este manifiesto, elaborado de forma conjunta por varios autores, es de todos y de ninguno. Si quieres sumarte a él, difúndelo por Internet.

Categories: itbrowns Tags:

Como arreglar el Deploy de MVs con software VPN

December 1st, 2009 CarlosBrown No comments

Hola,

Me he encontrado un problema a la hora de hacer un Deploy mediante Sysprep de maquinas virtuales XP con softwares VPNs instalados.

Despues de mucho pelearme, he descubierto que los software VPNs no graban correctamente en el registro de la maquina las tarjetas de red “falsas” que crean para poder conectarse de forma segura.

Para solventar esto, realizar lo siguiente:

0. Convertir la Template en Maquina Virtual
1. Crear un fichero llamado DeviceID.vbs en la maquina virtual que tengais como Template y agregarle lo siguiente

Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set netNics = objWMIService.ExecQuery("Select * from win32_networkadapter where Manufacturer != 'Microsoft' and ServiceName != 'VMnetAdapter' and manufacturer is not null and MacAddress is not null")
 
Dim strIndex
WScript.Echo " Net Adapter Details:"
WScript.Echo "---------------------"
 
For Each nNic in netNics
	strIndex = Empty
	WScript.Echo "DeviceId     : " + nNic.DeviceID(i)
	WScript.Echo "Manufacturer : " + nNic.Manufacturer(i)
	WScript.Echo "Name         : " + nNic.Name(i)
	WScript.Echo "ServiceName  : " + nNic.ServiceName(i)
	WScript.Echo "ProductName  : " + nNic.ProductName(i)
 
	Set nNicConfigs = objWMIService.ExecQuery("ASSOCIATORS OF {Win32_NetworkAdapter.DeviceID='" & nNic.DeviceID(i) & "'} where ResultClass = Win32_NetworkAdapterConfiguration")
 
	For Each confObj in nNicConfigs
		strIndex = CStr(confObj.Index(0) + 1)
		strKeyPath = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\" + strIndex
		WScript.Echo "**** REGKEY: " + strKeyPath
	Next
 
	WScript.Echo "**********************"
Next

2. Anotaros el numero final de los REGKEY.
3. Abrir el Registro e ir a la ruta HKLM\Software\Microsoft\Windows NT\CurrentVersion\NetworkCards y alli crear una Key por cada numero final del REGKEY que NO este creado.
4. Dentro de cada Key creada, crear un String value, con el nombre ServiceName y dentro un valor que querais (QUE NO SE REPITA.. yo por ejemplo creo NIC1, NIC14, etc..)
5. Ahora iros a la ruta HKLM\System\CurrentControlSet\Services\TcpIp\Parameters\Interfaces y crear una Key para cada String Value creado (NIC1, NIC14, etc..)

Convertir la maquina virtual en template y ya podreis hacer el Deploy

Categories: Vmware Tags: ,

Desactivar Modulos en Vmware ESX

November 13th, 2009 CarlosBrown No comments

Hola,

Cuando se instala el vmware ESX 3.x te arranca unos modulos sobre el acceso a discos, si no lo usas los puedes desactivar para ganar un poco de Perfomance en el vmware.

Para ver los modulos que hay, ejecutar lo siguiente

vmkload_mod -l

Y para desactivar los innecesarios ejecutar:

vmkload_mod -u MODULO

Si no teneis nada heredado de ESX 2.x yo recomiendo desactivar:

vmkload_mod -u vmfs2

Y si no usais ningun disco por NFS:

vmkload_mod -u nfsclient
Categories: Vmware Tags:

Funcion VB.net para insertar / eliminar / actualizar datos en SQL Server

November 12th, 2009 CarlosBrown No comments

Hola,
Esta mañana uno de los programadores la ha liado (como siempre :thumbup_tb:), resulta que no trabaja con transacciones en sus aplicaciones, y habia un usuario realizando millones de transacciones cuando el equipo del usuario PAMMM.. a tomar viento todo, dejando la BD inestable. Por suerte el Admin de SQL Server (o sea yo :clap_tb: ) tenia bien hecho el backup de la BD, porque sino aunque fuera culpa del programador o del usuario, el problema hubiera sido mio por no tener un buen backup (de esto ya hablare en otra entrada, porque es algo que me hace mucha gracia..(ironia = on))

Al final despues de hablar con el programador y casi tener que explicarle que eran las transacciones y que significaba el commit y el rollback le he creado esta mini función (la desarrollare mejor cuando tenga mas tiempo) y la pongo aqui por si algun DBA se encuentra con este programador :guns_tb: :grin1_ee:

Public Function EjecutarSQL(ByVal sServidorSQL As String, ByVal sDatabase As String, ByVal sSQL As String) As Boolean
        Dim cs As String = "server=" & sServidorSQL & ";Integrated Security SSPI;database=" & sDatabase
        Dim objTrans As System.Data.SqlClient.SqlTransaction = Nothing
        Dim Cn As New System.Data.SqlClient.SqlConnection(cs)
 
        Try
            Cn.Open()
            objTrans = Cn.BeginTransaction
            Dim cmd As New System.Data.SqlClient.SqlCommand(sSQL, Cn)
 
            With cmd
                .Transaction = objTrans
                .ExecuteNonQuery()
            End With
            objTrans.Commit()
            EjecutarSQL = True
        Catch ex As Exception
            If Not objTrans Is Nothing Then objTrans.Rollback()
            EjecutarSQL = False
        Finally
            If Not CnAux Is Nothing Then
                 If CnAux.State = ConnectionState.Open Then CnAux.Close()
            End If        
        End Try
    End Function
Categories: SQL Server, VB.Net Tags: ,

Crear Job de Maintenance Plan

November 9th, 2009 CarlosBrown No comments

¿Que es el Maintenance Plan?

El Maintenance Plan es un flujo de trabajo de diferentes tareas que se asigna mediante un asistente o de forma manual.
Tecnicamente es un paquete de Integration Services que tiene las tareas.

Creacion del Maintenance Plan

Aqui voy a explicar la forma más facil de crear un Maintenance Plan, que es con el Asistente que trae el SQL Server 2005 y SQL Server 2008 (las imagenes pertenecen al SQL2008).

1. Lo primero es entrar al SQL Server Management Studio y conectarse con el servidor en cuestion, e ir Management / Maintenance Plans y finalmente boton derecho Maintenance Plan Wizard
MantPlan_1

2. Nos mostrara una ventana con el inicio del Wizard.. darle a Next
MantPlan_2

3. En la siguiente ventana se nos pregunta el nombre del Maintenance Plan y la planificación (si se desea planificar)
MantPlan_3

3b. Si queremos planificarlo, darle al boton Change y nos muestra la tipica ventana de planificación de Jobs
MantPlan_4

5. Seleccionar las tareas a realizar por el Maintenance Plan
MantPlan_5

6. Ponerlas en orden de ejecución
MantPlan_6

7. Para cada tarea que tenga que ver con las BDs (Rebuild, Backup, etc..) nos mostrará unas ventanas muy similares (No las pongo todas para no hacer un MEGAPOST :blush_tb: ) para que seleccionemos las BDs que queramos y adaptemos cada tarea segun tus necesidades. Al escoger las BDs aconsejo marcar el Checkbox de que ignore las BDs que no estan Online.
MantPlan_7
MantPlan_8

8. La ventana de Limpieza nos mostrará lo siguiente, donde podras elegir el tiempo que se deben de mantener los logs y que tipo de logs vas a hacer limpieza
MantPlan_9

9. Otra ventana que creo que es importante es la del propio log del Maintenance Plan. Donde podremos escoger la ubicación del fichero log.
MantPlan_10

10. Al final nos mostrara la ventana con el informe de todo lo que se ha realizado
MantPlan_11

11. Poco a poco vereis como se va creando el Maintenace Plan
MantPlan_12

12. Una vez este todo OK, podras ver que se ha creado un Job de SQL Server con el nombre del MaintenancePlan.SubPlan_1
MantPlan_13

Bueno eso es todo!!.. como podeis ver no es muy dificil y yo os recomiendo hacerlo una vez por semana sobretodo con el Rebuild de Index, Update Stadistics, etc..

Espero que os sirva,

Categories: SQL Server Tags:

Como saber el numero de maquinas en la red segun la mascara de red

July 17th, 2009 CarlosBrown No comments

Dado, por ejemplo, la mascara 255.255.255.128, habria que hacer:

Descomponer el 128 en bites:

128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0

Y todo lo que son valor 0 sumar sus bites, en este caso son 128 (64+32+16+8+4+2+1) y a este valor se le resta 2 (Uno para el BroadCast y el otro es la misma red), o sea, que en total (en este ejemplo) nos quedarian 126

Categories: NetWorking Tags:

Como calcular la mascara de red

July 17th, 2009 CarlosBrown No comments

Recuperando unos apuntes de Networking que tenia, los aprovecho para poner aqui y tenerlos guardados…

Dada la dirección, por ejemplo, 141.167.169.0/25.
Significa que se necesitan 25 bites para formar la mascara (los 4 octetos)

Cada octeto son 8 bites.. con eso ya tenemos 8+8+8 = 24 o sea que tenemos: 255.255.255.x
Ahora hay que calcular el restante (25-24=1)
Cogemos la tabla

128 64 32 16 8 4 2 1
1 0 0 0 0 0 0 0

Sumando los digitos con 1.. nos queda 128… pues listo.. ya tenemos la mascara:
Mascara: 255.255.255.128
Bites: 8 8 8 1

Espero que os sirva

CarlosBrown

Categories: NetWorking Tags: