monitoreo

DMVs para detectar queries que mas consumen

Usando DMVs para detectar los queries que mas consumen

ver artículo
Checklist

Checklist del DBA

Lista de tareas y actividades cotidianas que todo DBA tiene que tener en cuenta

ver nota
monitoreo

Scripts de Monitoreo

Algunos scripts imprescindibles para monitorear SQL Server

ver nota
TSQL

Cross Join y Cross Apply

Diferencias entre las sentencias Cross Join y Cross Apply

ver nota
Nuevas sentencias de unión

Intersect, Except y union

Un análisis de las nuevas sentencias de SQL Server

ver nota

Herramientas Gratuitas y poco conocidas de Microsoft

  • martes, 21 de mayo de 2013
  • by
  • Román
  • Las siguientes son una serie de herramientas, algunas quizás no tan conocidas, provistas gratuitamente por Microsoft y que pueden ser de utilidad para los profesionales IT.

    WSCC - Windows System Control Center

    Mi primera opción no es en realidad una herramienta de Microsoft per se: Windows System Control Center es un programa de descarga de una sola parada para casi 300 herramientas de mantenimiento de Sysinternals de Microsoft y las suites cada vez más populares NirSoft: simplemente descargue WSCC de KLS-Soft, revise toda la herramientas que necesita y pulse en "Install". Minutos más tarde estás equipado con algunas de las herramientas más útiles que hay, incluyendo Disk2vhd, inicio de sesión automático y Autoruns (descrito más adelante). WSCC guarda estos archivos en C: \ Archivos de programa (x86) \ Sysinternals Suite NirSofts mientras que las herramientas se encuentran en C: \ Archivos de programa (x86) \ NirSoft Utilities.

    Windows System Control Center
    WSCC instala herramientas que puede hacer que tu antivirus lo alerte como potencial amenaza pero no hay de que temer dado que encontramos que algunas de las herramientas NirSoft dan falsos positivos de activación debido a su naturaleza. NirSoft es consciente del problema.

    RichCopy 4.0

    RichCopy 4.0
    Sí, todo el mundo conoce Robocopy, la línea de la versión "Pro" de comandos de herramienta integrada de transferencia de archivos del Explorador de Windows, que le ofrece muchas más opciones para copiar y mover carpetas. Sólo que ahora, hay una gran interfaz de interfaz de usuario para Robocopy - RichCopy 4.0 . Esta pequeña invención de TechNet le ahorra el dolor de cabeza del aprendizaje, el control y volver a escribir líneas de comandos. Estas son sólo algunas de las razones por las RichCopy es mucho mejor que el incorporado en los mecanismos de transferencia de archivos del Explorador de Windows:

    Copiar datos en un horario regular (por ejemplo, copiar archivos de su disco duro a un disco externo cada noche)

    Serializar el acceso a disco: acceso optimizar el disco para los dispositivos basados ​​en ATA a través de USB.

    Transferencias de archivos más rápidas (en algunos casos) por evitar la memoria intermedia del sistema para operaciones de archivo.

    Copiar archivos de forma asíncrona mediante varios subprocesos.

    Configuración de fecha y hora, los controles de tamaño de archivo y la configuración de seguridad.

    Además, RichCopy es más resistente contra las conexiones lentas o errores de transferencia. Si bien no tiene mucho sentido para copiar un archivo o una carpeta más pequeña, es esencial si usted está moviendo regularmente bultos de datos de un lugar a otro.

     
    Microsoft Attack Surface Scanner
    Microsoft Attack Surface Scanner
    Este tool es una especie de lista de control que le ayuda a analizar los problemas de seguridad y vulnerabilidades de enchufe rápido posible. MSATA escanea puertos, registros de eventos de seguridad, las entradas de ejecución automática, los servicios y la configuración de cortafuegos (entre otros) y consolida los resultados en un archivo CAB:
    Microsoft Standalone System Sweeper Tool
    MSSSST (sí, esa es la convención de nomenclatura de Microsoft en su mejor momento) crea un CD, DVD o memoria USB que aloja una copia sin conexión de Microsoft Security Essentials - incluyendo todas las últimas firmas descargados desde los servidores de MS de antemano. Especial para infecciones de rootkits.
    Microsoft Standalone System Sweeper Tool

    VMMap - Un vistazo dentro de la memoria de tu PC
    VMMap
    Alguna vez te preguntaste cuánto espacio de direcciones, la memoria principal y la memoria virtual de un proceso en ejecución está utilizando? VMMap tiene respuestas - y mucho, mucho más. Como uno de mis favoritos Sysinternals Suite (WSCC ver arriba), VMMap muestra una representación gráfica de todo el uso de la memoria que le ayuda a entender el costo de memoria de cada aplicación que se está ejecutando o en desarrollo. El bloque inferior de VMMap también detalla los archivos que están siendo utilizados por el proceso y cuánta memoria se recoge en el proceso.


    Disk2VHD
    Disk2VHD
    Otra herramienta de Sysinternals que no podía dejar de lado: Disk2vhd (también disponible a través de WSCC o directamente desde aquí: http://technet.microsoft.com/en-us/sysinternals/ee656415 ) con esto podes clonar tus particiones del sistema físico en un archivo de disco duro virtual (VHD) para su uso en Windows Virtual PC o para arrancar desde nativa (el arranque VHD es compatible con Windows 7 Enterprise). Esto es fantástico para la evaluación de software o para pasar a un nuevo sistema: básicamente se puede salvar todo el sistema operativo Windows, incluyendo todos los programas, configuraciones y datos, pasar a un sistema y todavía arrancar sus viejas ventanas dentro de un entorno virtual - sólo en caso de haber perdido algo! Cuidado: Disk2vhd no admite particiones de más de 127 GB y también clones de su registro partición entera (incluyendo su firma partición), por lo que podría encontrarse con problemas si usted está tratando de montar el archivo clonado con el sistema "vhd." que creó en el primer lugar
     Microsoft Windows Performance Toolkit
    Microsoft Windows Performance Toolkit
    Estas herramientas de rendimiento de Microsoft son las pruebas de velocidad más fiables para medir con precisión el rendimiento del PC durante un cierto período de tiempo. Para analizar el uso de PC a través de una cierta cantidad de tiempo, utilice el comando "xperf DiagEasy-on" para iniciar y "xperf-d trace.etl" para detener.

    Yo lo uso para solucionar problemas de un lento o pegado de arranque, apagado, en espera e hibernación. Se vincula estrechamente con todos estos procesos y le da un resumen de lo que está causando retrasos o problemas.
    TCPView
    TCPView
    Sufris de una conexión lenta? Tenes la sensación de que algo está empantanamiento el WiFi o el adaptador de Ethernet? TCPView (también parte de Sysinternals y disponibles a través de WSCC) es su oportunidad de averiguar qué proceso está costando a la cantidad de ancho de banda y hacer frente a este problema de conexión. Simplemente basta con abrir TCPView y ordenar todos los procesos haciendo clic en los "paquetes / bytes enviados" o "paquetes / bytes rcvd" de cabecera para obtener los datos de ancho de banda superior.
    Enhanced Experience Toolkit 2.0 Mitigación
    Enhanced Mitigation Experience Toolkit 2.0
    EMET refuerza la seguridad para las aplicaciones sin tener que recompilarlas o esperar a que los desarrolladores lancen una nueva versión.
    Añade varios parches a la aplicación de su elección, incluyendo SEHOP, Dynamic Data Execution Prevention y ASLR obligatoria.
     
    Read More...

    Jesús Muñoz Torres explica como crear un Cluster SQL Server en Windows Server 2008 R2

  • viernes, 12 de octubre de 2012
  • by
  • Román
  • En este video, Jesús Muñoz Torres explica paso a paso y magistralmente como armar un cluster para SQL Server 2008 R2 sobre Windows Server 2008 R2. Toda esta explicación está dada sobre entornos virtualizados de modo de poder replicarlo localmente a modo de prueba.

    Read More...

    Encontrar los queries que consumen mas recursos

  • domingo, 29 de abril de 2012
  • by
  • Román
  • Los DMVs (Dynamic Management Views) son una magnífica forma de encontrar información de performance a partir de SQL Server 2005 en adelante (2008/2008R2/2012)
    En este query de Pinal Dave se utilizan DMVs para encontrar los queries que mas consumen en un server SQL Server 2005/2008 (recordar que este script funciona solo en bases compatibilidad 2005/2008)


    Query:


    SELECT TOP 10 SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,
    ((
    CASE qs.statement_end_offset
    WHEN -1 THEN DATALENGTH(qt.TEXT)
    ELSE qs.statement_end_offset
    END - qs.statement_start_offset)/2)+1),
    qs.execution_count,
    qs.total_logical_reads, qs.last_logical_reads,
    qs.total_logical_writes, qs.last_logical_writes,
    qs.total_worker_time,
    qs.last_worker_time,
    qs.total_elapsed_time/1000000 total_elapsed_time_in_S,
    qs.last_elapsed_time/1000000 last_elapsed_time_in_S,
    qs.last_execution_time,
    qp.query_plan
    FROM sys.dm_exec_query_stats qs
    CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
    CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
    ORDER BY qs.total_logical_reads DESC -- logical reads
    -- ORDER BY qs.total_logical_writes DESC -- logical writes
    -- ORDER BY qs.total_worker_time DESC -- CPU time

    Obviamente se puede cambiar el ordenamiento del script para destacar otro criterio de búsqueda.


    Hugo Román Bernachea
    SQLServer777@gmail.com
    Microsoft Certified DBA
    Microsoft Certified Trainer
    Twitter: @bernachea


    Read More...

    Como reparar usuarios "huérfanos"?

  • miércoles, 25 de abril de 2012
  • by
  • Román
  • Muchas veces encontramos que el user de una base de datos está "huérfano", lo que significa que ya no existe un login asociado al mismo.
    Puede ocurrir que exista un login incluso con el mismo nombre, pero internamente su SID no coincide.







    Lo primero que hacemos es verificar cuales usuarios son huérfanos en la base de datos

    use [su base de datos]
    go
    EXEC sp_change_users_login 'Report'
    con la opción Report le estamos diciendo que liste los usuarios huérfanos.
    Una vez que encontramos los usuarios huérfanos los reparamos con la siguiente sentencia.
    EXEC sp_change_users_login 'Auto_Fix', 'user'
    Donde user es el nombre del usuario que queremos "reparar".

    Ahora bien, si además se quiere crear un nuevo login y password para este usuario, usaremos la siguiente sentencia:

    EXEC sp_change_users_login 'Auto_Fix', 'user', 'login', 'password'

    Hugo Román Bernachea
    Mail de contacto: SQLServer777@gmail.com

    Microsoft Certified DBA
    Microsoft Certified Trainer
    Twitter: @bernachea


    Read More...

    SQL Server Best Practices for Developers

  • lunes, 13 de febrero de 2012
  • by
  • Román














  • SQL Server Best Practices - Hugo Bernachea - Part One
    Hugo Román Bernachea
    Mail de contacto: SQLServer777@gmail.com

    Microsoft Certified DBA
    Microsoft Certified Trainer
    Twitter: @bernachea

    Read More...

    Máquina virtual para probar las nuevas características de Business Intelligence de SQL Server 2012 (denali)

  • by
  • Román
  • Microsoft ha puesto a disposición la Base ImageX Server que es una imagen de Máquina virtual para testear las últimas características de Business Intelligence de SQL Server 2012 (denali) - RC0, incluyendo PowerView Reports y PowerPivot Excel Documents.






    La máquina la pueden obtener de esta url: http://www.microsoft.com/betaexperience/pd/BIVHD/enus/, para conectarse a la máquina pueden utilizar el usuario CONTOSO\Administrator, con la contraseña pass@word1 (precaución con el idioma de la máquina, está en inglés por lo que es posible que la @ la tengan que introducir con Shift+2).


    Hugo Román Bernachea
    Mail de contacto: SQLServer777@gmail.com

    Microsoft Certified DBA
    Microsoft Certified Trainer
    Twitter: @bernachea


    Read More...

    Configurando una replicación Master a Master usando MySQL

  • jueves, 5 de enero de 2012
  • by
  • Román
  • Todos sabemos de la importancia de implementar mecanismos de alta disponibilidad en los servidores que nos toca administrar. En este caso, voy a detallar los pasos para implementar una replicación master to master o bidireccional entre servidores MySQL (una especie de espejado o mirror).

    En ambos servers debemos hacer las siguientes tareas:

    1. Crear una carpeta Logs, por ejemplo:
    c:\program files\mysql\logs\

    2. Crear un usuario para la replicación con suficientes permisos.

    mysql -u root -pSuPassword (sin espacios el pass y el -p)
    GRANT REPLICATION SLAVE ON *.* TO 'usuario'@'%' IDENTIFIED BY 'pepe';
    FLUSH PRIVILEGES;

    En el master principal

    Hay que editar el archivo my.ini (en windows) o my.conf (en linux).
    En la sección marcada como
    [mysqld] agregar lo siguiente.
    log-bin = “D:\MySQL\MySQL Server 5.1\Logs” (cuidado con las comillas)
    binlog-do-db=mibase
    server-id=1

    y agregar al final del archivo lo siguiente:
    slave-net-timeout = 30
    master-connect-retry = 30

    Una vez hecho esto, grabamos y reiniciamos el servicio, ya sea por services o por línea de comandos:
    mysqld restart

    En el Master secundario:

    Lo mismo, cambiar my.ini o my.conf, segun sea Windows o Linux y agregar lo siguiente en la sección: [mysqld]

    log-bin = “c:\program files\mysql\logs\” (cuidado con las comillas)
    binlog-do-db=winnings
    server-id=2 (fijarse que este número es distinto al del master principal)

    y al final del archivo agregar:
    slave-net-timeout = 30
    master-connect-retry = 30

    grabar el archivo y reiniciar el servicio mysql

    mysqld restart

    En el Master principal:

    Para evitar problemas vamos a bloquear las tablas hasta que finalicemos la operatoria.

    FLUSH TABLES WITH READ LOCK;

    En el Master secundario:

    Creamos la base a ser replicada:
    mysql -u root -pSuPassword

    CREATE DATABASE suBase;

    mysql -u root -pSuPassword suBase < suBase_backup.sql

    En el Master principal:

    mysql -u root -pSuPassword

    use SuBase
    go
    SHOW MASTER STATUS;

    Esto nos mostrará algo asi
    PLAIN TEXT
    CODE:
    +---------------------+----------+-------------------------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +---------------------+----------+-------------------------------+------------------+
    | mysql-bin.000001 | 21197930 | my_database,my_database | |
    +---------------------+----------+----------------------------

    Lo que nos interesa a nosotros es el dato del file (mysql-bin.000001) y el número de la posición (21197930) . Con esos datos nos vamos al master secundario.

    En el master secundario:
    mysql -u root -pSuPassword

    stop slave;
    CHANGE MASTER TO MASTER_HOST='10.33.0.14', MASTER_USER='usuario', MASTER_PASSWORD='pepe’, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=21197930;
    start slave;

    Fijense que en los parametros master_log_file y master_log_pos pusimos los datos que guardamos en el paso anterior en el master principal. En master user pusimos el usuario que creamos originalmente para la replicación y en Master_password su correspondiente password.

    A continuación ejecutamos lo siguiente para ver como está funcionando la replicación:

    Show Slave Status;

    A este punto ya tendríamos seteada la replicación desde el master principal al master secundario, pero nos faltaría hacer la inversa, replicación desde el secundario al principal, por lo tanto...
    Vamos al Master secundario.
    use SuBase
    go
    SHOW MASTER STATUS;
    Lo mismo que antes, tomamos los valores de file y position y los llevamos ahora al master principal.

    En el master principal
    mysql -u root -pSuPassword

    stop slave;
    CHANGE MASTER TO MASTER_HOST='10.33.0.13', MASTER_USER='usuarios', MASTER_PASSWORD='pepe’, MASTER_LOG_FILE='Logs.000001', MASTER_LOG_POS=107;
    start slave;

    Y como habiamos bloqueado las tablas para replicar sin problemas ahora es el momento de desbloquearlas:

    unlock tables;

    Si se siguieron todos los pasos, en este momento la replicación debería estar funcionando.

    Hugo Román Bernachea
    Mail de contacto: SQLServer777@gmail.com

    Microsoft Certified DBA
    Microsoft Certified Trainer
    Twitter: @bernachea















    Read More...

    Where In usando Variables varchar.

  • martes, 15 de noviembre de 2011
  • by
  • Román

  • Esta es una cuestión que muchas veces queremos resolver, como hacer un where in contra una variable de tipo varchar.
    Obviamente que en reporting services está cuestión se resuelve por si misma, pero el punto es cuando queremos ejecutar sentencias con where in dados por una variable.
    Está claro que se puede ejecutar por medio de xml o sql dinámico, pero estas soluciones no están exentas de su complejidad.

    La solución propuesta en este caso es la creación de una función que transforma el contenido de una variable de tipo varchar en un resultset de integers.

    La función

    Create function dbo.SplitToInt(@values varchar(8000), @delimiter varchar(10))
    returns @result table (value int)
    as
    begin
    declare @v as varchar(8000);
    while charindex(@delimiter,@values) <> 0
    begin
    set @v = substring(@values,1,charindex(@delimiter,@values)-1);
    if isnumeric(@v)=1
    insert into @result
    values(@v);
    set @values = substring(@values,charindex(@delimiter,@values)+1,len(@values))
    end
    if isnumeric(@values)=1
    insert into @result
    values(@values);
    return;
    end

    Un ejemplo:

    declare @sIds varchar(10)
    set @sIds = '1,3,4'
    select * from tabla where id in (select * from SplitToInt(@sIds, ','))

    Hugo Román Bernachea
    Mail de contacto: SQLServer777@gmail.com

    Microsoft Certified DBA
    Microsoft Certified Trainer
    Twitter: @bernachea

    Read More...

    Categorías