Eladio Rincón Herrera
Skip Navigation Links
News
Our Team
Mentoring
Eladio Rincón Herrera
Go to home page
Go Search

 
Other Blogs
There are no items in this list.

De mudanzas...
Hola,
 
que estoy de mudanzas... me cambio de blog; a partir de ahora, publicaré con Carlos Sacristán, Rubén Garrigós en:
 
 
Nada, nos vemos aquí al lado...
 
Eladio
Fecha de lanzamiento de SQL Server 2008

Como comenta mi amigo Gux en su blog (http://blogs.solidq.com/ES/glarriera/default.aspx), SQL Server 2008 (Katmai) ya tiene fecha oficial de lanzamiento.

Se presentará oficialmente el 27 de febrero de 2008, en Los Angeles, y formará parte de un lanzamiento conjunto:

  • Windows 2008.
  • SQL Server 2008.
  • Visual Studio 2008.

Nota de prensa: (http://www.microsoft.com/presspass/press/2007/jul07/07-10WPCDay1PartnersPR.mspx)

Sitio web de SQL Server 2008: (http://www.microsoft.com/sql/prodinfo/futureversion/default.mspx), donde puedes ver 5 videos de presentación del producto, y diferentes whitepapers del producto…

A estudiar… J

 

Mejores prácticas con Full-Text Search en SQL Server 2005

Ron Talmage ha estado trabajando en el SQL Server Customer Lab, buscando las cosquillas a Full-Text, y aquí puedes leer un resultado de las conclusiones obtenidas:

http://www.microsoft.com/technet/prodtechnol/sql/bestpractice/ftslesld.mspx

ay Ron, que envidia!!

[Wold Wide Exclusive desde el Solid Quality Summit] Próxima versión de Visual Basic… nombre en clave “mola!”

No sé si lo han hecho público en el Teched de Junio, pero siguiendo la tabla de hechos de mi amigo Javier Loría, creo que la próxima versión de Visual Studio ya tiene nombre en clave (codename).

Resulta que Javier dice que "hasta que no están hechas las camisetas del producto, poca información es segura relativa a nombres de productos, fechas de entrega, etc. "

Hoy durante el Solid Quality Summit en Madrid (podéis ver una foto de los asistentes – más de 80 personas), capturé una instantánea en la que se encontré una persona con una camiseta haciendo referencia a una versión de Visual Basic hasta ahora desconocida…

Esta es la foto del delegado con la camiseta:

Más información en http://www.elguille.info

 

Y esta es la foto de los asistentes al evento (se puede ver "medio cuerpo" de Fernando G. Guerrero en acción J):

Database Mirroring desde aplicaciones VB6 y ODBC

 

Database Mirroring también está disponible para conexiones ODBC; recuerda que para que la aplicación cliente sepa a qué servidor intentar "re-conectar", en algún sitio en su configuración debe conocer los servidores miembros.

Puedes cambiar la cadena de conexión de tu aplicación usando la siguiente sintaxis:

  • Server=instancia_servidor_principal;
  • Failover Partner=instancia_servidor_mirror;

Cambiar la cadena de conexión, es posible que no requiera recompilar la aplicación si lo gestionas a través de ficheros INI, pero en las "viejas" aplicaciones VB6, no se utilizaba esta técnica con demasiada frecuencia por lo que con bastante probabilidad requeriría recompilación de la aplicación.

Como debes saber, las APIs de acceso a datos también implementan Mirroring para ODBC, por lo que si tienes DSNs de usuario también es muy fácil de cambiar; tan sólo tendrás que cambiar el Driver al nuevo Driver SQL Native Cliente (fíjate en esta primera pantalla el elemento seleccionado):

 

Y luego, en la configuración de la base de datos a la que deseas conectar, tienes la posibilidad de establecer cual es servidor mirror (en el caso de ejemplo sería DELL-ERH\INSTANCE2):

 

 

 

Otras consideraciones interesantes que comenté en la presentación de ayer de nuestro SQL Summit:

  • Recuerda que cuando tu aplicación conecta al servidor principal, el servidor principal envía a la aplicación cliente quien es el servidor mirror: en este caso la información que tienes en la cadena de conexión, las APIs de acceso a datos no la necesitan porque tiene de primera mano (el servidor principal) quien es el servidor mirror.
  • La información que tienes en la cadena de conexión del servidor mirror, solamente será utilizada cuando el primer intento de conexión no se puede satisfacer contra el servidor principal. SOLO en este caso, tirará de la información que tiene de la cadena de conexión.

 

En SQL Server 2008, (según comentan los whitepapers iniciales), no será necesario codificar quien el servidor mirror porque "milagrosamente" la aplicación cliente tendrá cacheada esa información. Digo "milagrosamente", porque no conozco todavía el mecanismo que utilizarán para cachear esa información. Recuerdo que en las primeras fases betas de SQL Server 2005, implementaban un mecanismo similar, pero con el paso del tiempo la implementación se quitó del producto por razones que desconozco.

Mi opinión personal es que el comportamiento que se promete para SQL Server 2008, es el comportamiento que "debería ser" J

 

 

 

A la carga con la próxima versión de SQL Server… se llamará 2008...

Microsoft ya ha anunciado oficialmente la próxima versión de SQL Server… casi todos sabíamos que se llamaría Katmai, pero no su año (al menos oficialmente)… pues será en 2008.

¿Cuál es tu feature más interesante? A mí sin lugar a dudas, desde que nos lo presentaron en Redmond allá por Febrero, me ha enganchado con el Declarative Management… Desde luego han comenzado fuerte:

  • CTP de Junio disponible para descargar.
  • Webcasts.
  • Libros en pantalla.
  • Documentación.
  • White Papers…

Por cierto, la URL que a todo te lleva

http://www.microsoft.com/sql/prodinfo/futureversion/default.mspx

 

A por ellooooo… J

Me gustan las DMVs (2 de n): Uso de cada fichero de base de datos (datos y log)

 

Introducción

He estado impartiendo una serie de charlas para nuestros Summits en Latam (http://learning.solidq.com/la/CourseDetail.aspx?CourseScheduleId=211), y ayer tuve un webcast similar para CAPA8 en Argentina (http://www.microsoft.com/conosur/technet/realityit/).

Durante las sesiones hice referencia a conocer el uso que se hace de los ficheros del servidor, cual es la topología de uso de cada fichero, cuales son los más usados, etc.

En SQL Server 2005, aparece una DMV (dm_io_virtual_file_stats, http://msdn2.microsoft.com/es-es/library/ms190326.aspx), que nos reporta información tan interesante como:

Nombre de columna  

Tipo de datos  

Descripción  

database_id

smallint

Id. de la base de datos. 

file_id

smallint

Id. del archivo. 

sample_ms

int

Número de milisegundos desde que se inició la instancia de SQL Server. Esta columna se puede utilizar para comparar diferentes resultados de esta función. 

num_of_reads

bigint

Número de operaciones de lectura realizadas en el archivo.

num_of_bytes_read

bigint

Número total de bytes leídos en el archivo. 

io_stall_read_ms

bigint

Tiempo total, en milisegundos, que los usuarios han esperado para que se realicen las lecturas en el archivo. 

num_of_writes

bigint

Número de operaciones de escritura realizadas en este archivo.

num_of_bytes_written

bigint

Número total de bytes escritos en el archivo. 

io_stall_write_ms

bigint

Tiempo total, en milisegundos, que los usuarios han esperado para que se completen las escrituras en el archivo.

io_stall

bigint

Tiempo total, en milisegundos, que los usuarios han esperado para que se completen las operaciones de E/S en el archivo. 

size_on_disk_bytes

bigint

Número de bytes utilizados en el disco para este archivo. En el caso de archivos dispersos, este número es el número real de bytes en el disco utilizados para las instantáneas de bases de datos.

file_handle

varbinary

Identificador de archivo de Windows para este archivo. 

 

Obviamente es copy/paste de la url anterior, pero fíjate que la DMV reporta el número de lecturas, escrituras, incluso bytes, realizados en cada fichero de base de datos.

Esto es absolutamente indispensable para elegir cómo deben estar distribuidos los ficheros, en qué unidades físicas, incluso, qué nivel RAID es adecuado. La literatura dice que debes utilizar tal o cual nivel RAID para cada tipo de fichero, pero la realidad es que esa decisión la tomarás en función del número de discos disponibles, así que por ejemplo, si tienes 9 discos, ¿qué te conviene montar?

  • Un RAID10 con 4 discos, y
  • Un RAID5 con 5 discos.

O quizás:

  • Un RAID 1 con 2 discos, y
  • Un RAID10 con 6 discos.

O quizás:

  • Un RAID 1 con 2 discos, y
  • Un RAID5 con 7 discos.

Igual estás pensando: "Madre mia, cuanto lio, y yo que pensaba que había que montar topologías concretas para cada tipo de fichero; ¿no habíamos quedado que RAID10 para logs, y RAID5 para datos si no tenemos más discos?" Esa decisión la tendrás que tomar en función de uso que se haga de tus ficheros, y esa información la obtienes con el procedimiento que veremos a continuación J

Si claro, ¿pero quién justifica a los tíos de sistemas que en una instalación que ha estado funcionando "bien" durante un par de años, vamos a cambiar los niveles RAID porque lo ponga en este blog? Si lo necesitas en tu sistema, pues tendrás que justificarlo y proponer el cambio; piensa que depende del beneficio que tengas… ¿conviene montar toda esa historia para ganar una media de digamos 100 milisegundos por consulta? Pues depende… hace no mucho estuve con una empresa en Costa Rica que gestionaban créditos hipotecarios para miles de agencias… piensa un momento que esos 100 milisegundos que podrías ganar, supondrían mayor concurrencia en tu sistema (las transacciones son más cortas), y mayor tiempo de respuesta (sensación de usuario)… como siempre, depende la inversión que vas a hacer con el retorno de beneficios…

El procedimiento almacenado

El siguiente código sirve para identificar a nivel de fichero de base de datos, qué tipo de uso se hace. El procedimiento almacenado está basado en el procedimiento anterior de waitstats, así que esta vez me permitiré no explicarlo; recordar: se hacen dos capturas, y se calculan los deltas, ok?

 

IF EXISTS (SELECT * FROM SYS.PROCEDURES WHERE name = 'sproc_get_fileiostats_percentage')

DROP PROC dbo.sproc_get_fileiostats_percentage

GO

 

CREATE PROC dbo.sproc_get_fileiostats_percentage

    @hours tinyint = null,

    @minutes tinyint = null,

    @seconds tinyint = null

AS

 

SET NOCOUNT ON

 

IF @hours IS NULL

    SET @hours = 0

IF @minutes IS NULL

    SET @minutes = 0

IF @seconds IS NULL

    SET @seconds = 0

 

--

-- Validaciones iniciales

--

IF @hours < 0 OR @hours > 24

BEGIN

RAISERROR ('Hours range is not valid.', 16, 1 )

RETURN

END

 

IF @minutes < 0 OR @minutes > 60

BEGIN

RAISERROR ('Minutes range is not valid.', 16, 1 )

RETURN

END

 

IF @seconds < 0 OR @seconds > 60

BEGIN

RAISERROR ('Seconds range is not valid.', 16, 1 )

RETURN

END

 

IF @hours = 0 and @minutes = 0 and @seconds = 0

BEGIN

RAISERROR ('The measure time must be greater than zero.', 16, 1 )

RETURN

END

 

DECLARE @t TABLE (

id int identity

, database_id smallint

, file_id smallint

, num_of_reads bigint

, num_of_bytes_read bigint

, io_stall_read_ms bigint

, num_of_writes bigint

, num_of_bytes_written bigint

, io_stall_write_ms bigint

)

 

--

-- Inserción de primera captura

--

INSERT @t

(     database_id

    , file_id

    , num_of_reads

    , num_of_bytes_read

    , io_stall_read_ms

    , num_of_writes

    , num_of_bytes_written

    , io_stall_write_ms )

SELECT

    database_id

    , file_id

    , num_of_reads

    , num_of_bytes_read

    , io_stall_read_ms

    , num_of_writes

    , num_of_bytes_written

    , io_stall_write_ms

FROM

sys.dm_io_virtual_file_stats(-1,-1)

 

--

-- A esperar n tiempo

--

DECLARE @s CHAR(8)

SET @s =

RIGHT ('00' + CAST (@hours as VARCHAR(2)), 2) + ':'

    + RIGHT ('00' + CAST (@minutes as VARCHAR(2)), 2) + ':'

    + RIGHT ('00' + CAST (@seconds as VARCHAR(2)), 2)

 

WAITFOR DELAY @s

 

--

-- Inserción de segunda captura

--

INSERT @t

(     database_id

    , file_id

    , num_of_reads

    , num_of_bytes_read

    , io_stall_read_ms

    , num_of_writes

    , num_of_bytes_written

    , io_stall_write_ms )

SELECT

    database_id

    , file_id

    , num_of_reads

    , num_of_bytes_read

    , io_stall_read_ms

    , num_of_writes

    , num_of_bytes_written

    , io_stall_write_ms

FROM

sys.dm_io_virtual_file_stats(-1,-1)

 

 

SELECT s.name, v.* FROM (

SELECT

    T1.database_id

    , T1.file_id

    , (AVG(T2.num_of_reads - T1.num_of_reads)) num_of_reads

    , (AVG(T2.num_of_bytes_read - T1.num_of_bytes_read)) num_of_bytes_read

    , (AVG(T2.io_stall_read_ms - T1.io_stall_read_ms)) io_stall_read_ms

    , (AVG(T2.num_of_writes - T1.num_of_writes)) num_of_writes

    , (AVG(T2.num_of_bytes_written - T1.num_of_bytes_written)) num_of_bytes_written

    , (AVG(T2.io_stall_write_ms - T1.io_stall_write_ms)) io_stall_write_ms

FROM @T t1

JOIN @T t2

ON T1.database_id = T2.database_id

AND T1.file_id = T2.file_id

AND t1.id < T2.id

GROUP BY

    T1.database_id

    , T1.file_id

) v

JOIN sys.databases s

ON v.database_id = s.database_id

WHERE num_of_reads <> 0 OR num_of_writes <> 0

GO

 

Y un ejemplo de uso sería el siguiente:

EXEC dbo.sproc_get_fileiostats_percentage

    @hours = 1,

    @minutes = null,

    @seconds = null

GO

  • ¿Qué hará? Pues como habrás imaginado, tardará en finalizar su ejecución 1 hora, y te mostrará el uso que se hace de cada fichero durante ese periodo de tiempo.
  • ¿Siguiente paso? Copiarlo a un documento Excel, y calcular porcentajes. Recuerda, será tan sencillo como contar habas, ¿verdad Carlos? J
  • Si bien la DMV no existe en SQL Server 2000, existe la función ::fn_virtualfilestats(-1, -1), que expone prácticamente lo mismo
Entrevista de Itzik Ben-Gan a David Campbell
 
Extraordinaria entrevista de Itzik a David Campbell (General Manager of Strategy, Infrastructure and
Architecture of Microsoft SQL Server)
 
 
Pasado, presente, y futuro de SQL Server...
 
Gracias Itzik :)
SQLU Summit 2007 (Madrid, 18 Junio - 22 junio 2007)

   

Ya está en marcha el SQLU Summit 2007 que lleva camino de convertirse en todo un clásico en el mundo IT en España. Algunas preguntas que quizás te ayuden a comprender la importancia de tu asistencia:

¿Has estado en ITForum, o TechEd y pierdes mucho contenido por culpa del idioma? Nuestro evento es en castellano, por lo que seguro que entiendes todo.

¿Has estado en ITForum, o TechEd y no has podido preguntar dudas a los ponentes? Nosotros somos más próximos al delegado… de hecho, nos tienes a tu disposición durante los 5 días de evento, por lo que plantear casos reales a los delegados es uno de los requerimientos más habituales.

¿Has estado en eventos de una mañana en la que solamente se te presentan funcionalidades? Nosotros vamos más allá. Nuestras presentaciones están basadas en la experiencia de proyectos reales.

¿Has estado en eventos de día completo que presentan muchas cosas en poco tiempo? Nosotros tenemos tres tracks diferentes (BI, Relacional, Desarrollo .NET), y los delegados pueden planificar de antemano a qué ponencias asistirán.

Además, (y a diferencia de otros eventos), los seminarios del lunes son gratuitos para los asistentes. Podrás elegir uno de los siguientes seminarios:

        Optimización de Servidores SQL Server

        Desarrollo con Sharepoint 2007

        Desarrollo de una solución de BI End-to-End

   

Antonio Soto, Marino Posadas, y un servidor (Eladio Rincón con SP2), estamos a cargo de los tres tracks, y extraoficialmente, podemos adelantaros la lista de sesiones; digo extraoficialmente, porque todavía hay flecos que cerrar, pero con una probabilidad de 80-90% serán las mismas sesiones:

Track de Desarrollo:

        Buenas prácticas en aplicaciones C/S con .NET 2.0

        Visual Studio Team System: El ciclo de vida de las aplicaciones

        Visual Studio Team System para profesionales de BB.DD

        Aspectos avanzados del desarrollo en ASP.NET 2.0

        Programación Web mediante ASP.NET 2.0 AJAX Extensions

        Aspectos avanzados de acceso a datos en ADO.NET 2.0

        Integración de aplicaciones con Visual Studio Tools for Office 2005

        Tips & Tricks en .NET 2.0

        Desarrollo con las API's de Windows Vista: WinFx

        Windows Longhorn Server para el Desarrollador

        Orcas y el desarrollo en Windows Vista/Longhorn

        Novedades en los lenguajes para Orcas: VB.NET y C# v. 3.0

        LINQ y el nuevo modelo de acceso a datos

        WPF/E, interfaces de usuario y Microsoft Expression

        WCF y la integración de modelos de comunicación

        WWF: programación de la Inteligencia de Negocio

        Windows ScoreCard: seguridad e identidad en las nuevas plataformas

        Desarrollo .NET para Microsoft Windows SharePoint Services (WSS) 3.0

Track de Business Inteligence (la tradicional sala de los cubos):

        Novedades de Katmai para Business Intelligence (*Si conseguimos permiso para ello)

        Integración de Office 2007 en una solución de BI

        Trucos y Buenas Prácticas en SSIS

        Reporting Services y los Servicios Web XML

        Performance Point 2007: Un vistazo general

        Planificación mi negocio con PerformancePoint 2007:Planning Server

        Implementando Cuadros de Mando con PerformancePoint 2007

        Modelando mi negocio con Performance Point 2007: Business Modeler

        ¿Qué pinta Sharepoint 2007 en todo esto?

        Trucos y Buenas Prácticas en SSRS

        Optimización de rendimiento en SSAS

        Integrando BI en el día a día

        Generación de Informes Ad-Hoc: Report Builder

        Implementando Procesos ETL con SSIS

        Buenas Prácticas en SSAS: MDX y Cálculos

        El proceso de desarrollo de Soluciones de BI

        Agregando Inteligencia a mis aplicaciones: Data Mining

        Escalabilidad y Alta Disponibilidad en una Solución de BI

Track del motor relacional (la tradicional sala de los índices):

        Seguridad de datos: Mejores prácticas para asegurar tu base de datos y tus datos

        Service Broker: Introducción, conceptos y usos

        SSIS para procesos OLTP

        Service Broker: conceptos avanzados y mejores prácticas desde la experiencia

        Novedades en Katmai (* Si conseguimos permiso explícito para ello)

        Camino del Grid: Replicación Peer To Peer

        MS Clustering: guía de instalación y administración adecuada

        Indexación: tipos de índices, ventajas, desventajas, y mantenimiento

        Pon una DMV en tu vida para ver donde le duele a tu servidor

        Ejemplos prácticos de para administradores con SMO y WMI

        Paginación con SQL Server 2005

        Mantenimiento, recuperación y corrupción de datos en SQL Server 2005

        Procedimientos almacenados si/no… menudo dilema

        VSTS para DBPros en el ciclo de vida de un proyecto de software

        Casos reales de DBMirroring y mejores prácticas

        ADO.NET y nuevas habilidades de SQLNCLI

        Quest Software (Replication Tools)

        Mejores Prácticas aprendidas optimizando sistemas de bases de datos

   

Todo un WOW de sesiones, ¿verdad? Más información del evento, la puedes encontrar en:

La documentación oficial:

http://blogs.solidq.com/ES/formacion/Documentos/SUMMITMADRID.pdf

¿Cómo registrarse?

http://learning.solidq.com/ib/CourseDetail.aspx?CourseScheduleId=215

  

MVP en SQL Server un añito más...
Bueno, otro año me han invitado al programa MVP en la especialidad de SQL Server... vamos y creo que ya son 5...
 
Me estoy imaginando a Pene diciendo Elaaaadiiiiiooooooo (en lugar de Peeedrrrrooooooo)... hasta suena bien :)
 
Por cierto, no soy el único, en Solid Quality Learning, en la hornada de Abril, hemos sido nombrados nada menos que 9 mentores:
 
Andy Leonard; SQL Server
Dino Esposito; MVP (ASP.NET)
Dusan Zupancic; MVP (ASP.NET)
Eladio Rincón; SQL Server
Erik Veerman; SQL Server
Karol Papaj; SQL Server
Marino Posadas; Visual C#
Peter Myers; SQL Server
Randy Dyess, SQL Server
 

 
Enhorabuena a todos :)
 
1 - 10 Next

 ‭(Hidden)‬ Admin Links