Search This Blog
Wednesday, September 27, 2017
El algoritmo de llenado proporcional (Proportional fill)
Tuesday, January 21, 2014
Bloqueo automatico de cuentas en SQL Server por numero de intentos
Friday, October 18, 2013
Ejecutar múltiples archivos SQL
Durante el Pass Summit en Charlotte, charlando con mi amigo Guillermo Taylor que por cierto les recomiendo leer su blog, hablábamos sobre la necesidad de ejecutar aproximadamente 4000 archivos SQL y cómo hacerlo rápidamente, bueno, durante esas charlas en los intermedios de más charlas llegamos a la conclusión de hacerlo utilizando PowerShell.
Ahora, imaginen un archivo .TXT con las siguientes características
C:\Queries\Query1.sql
D:\Consultas\Consulta1.sql
P:\MoreQueries\Query2.sql
P:\Consultas2\Consulta.sql
Bien, como pueden ver, el archivo contiene múltiples ubicaciones, bien, podríamos haberlo hecho utilizando SSIS (Como hacerlo con SSIS), pero solo para poner en practica nuestros skills con PowerShell decidimos hacerlo allí.
$archivo = "C:\ArchivosSQL\test.txt"$entradas = gc $archivo
foreach ($entrada in $entradas)
{SQLCMD -S <SERVIDOR> -U <USUARIO> -P <PASSWORD> -d <BASE DE DATOS> -i $entrada
}
Enjoy it from the #Summit13 at #SQLPass
Tuesday, August 20, 2013
Antes y después del Merge – Upsert SQL Server
Thursday, January 31, 2013
Como determinar que puerto esta utilizando SQL Server 2012 Analysis Services
Con el fin de determinar que puerto esta utilizando SQL Server Analysis Services 2012 después de un reinicio, utilizaremos el command prompt y un par de líneas de código que retornaran la información deseada. (Ver todo el articulo)
Friday, October 5, 2012
Como particionar una tabla existente
Thursday, October 4, 2012
Como especificar el fill factor en un índice
Lleno
|
Lleno
|
Lleno
|
Lleno
|
Lleno
|
Lleno
|
Lleno
|
Lleno
|
Libre
|
Libre
|
Consideraciones para temas de rendimiento
Page splits (Contador: \SQLServer:Access Methods\Page Splits/sec)
Tener en cuenta para determinar el fill factor
Fragmentación y desfragmentación de índices
Columna
|
Descripción
|
avg_fragmentation_in_percent
|
Porcentaje de fragmentación lógica
|
fragment_count
|
Cantidad de fragmentos
|
avg_fragment_size_in_pages
|
Numero promedio de páginas en un fragmento de un índice.
|
Porcentaje de fragmentación
|
Instrucción a ejecutar
|
Entre 5% y 30%
|
ALTER INDEX REORGANIZE
|
Mayor al 30%
|
ALTER INDEX REBUILD
|
Monday, October 1, 2012
Friday, September 21, 2012
Friday, August 10, 2012
DBCC SHRINKFILE y sus implicaciones
Hace algun tiempo un cliente me pidio una solucion para poder reducir el tamano de las bases de datos, mi respuesta ante este tipo de preguntas siempre ha sido otras preguntas:
- Para que quiere reducir el tamano de su base de datos?
- No tiene espacio?
La respuesta ante esto es tipicamente la misma
- Para hacerle “Mantenimiento”
- Si tengo, pero es que quiero liberarlo…
Ante estas respuestas procuro siempre darle la misma recomendacion a mis clientes:
No lo haga, no lo haga a menos que sea extrictamente necesario!
Muchas veces los clientes y algunos DBAs ejecutan la siguiente instruccion con el fin de reducir el tamano de sus bases de datos
1: USE AdventureWorks;
2: GO
3: -- Truncate the log by changing the database recovery model to SIMPLE.
4: ALTER DATABASE AdventureWorks
5: SET RECOVERY SIMPLE;
6: GO
7: -- Shrink the truncated log file to 1 MB.
8: DBCC SHRINKFILE (AdventureWorks_Log, 1);
9: GO
10: -- Reset the database recovery model.
11: ALTER DATABASE AdventureWorks
12: SET RECOVERY FULL;
13: GO
Sin embargo este codigo tiene un impacto bastante importante…
Si vamos a la linea 4 y 5, vemos que la base de datos es inicialmente cambiada a modo de recuperacion SIMPLE, al hacer este cambio la historia de copias de seguridad (Backups) de la base de datos se pierde, de esta manera, si deseas sacar un backup diferencial de tu base de datos, sera necesario sacar un backup full nuevamente.
Ten cuidado de las implicaciones que pueda tener la ejecucion de codigo dentro de tus bases de datos.
Nos leemos luego!
John ![]()
Wednesday, July 18, 2012
Monday, April 16, 2012
Si Shakespeare fuese un DBA – Cluster o NonCluster, esa es la cuestion
Durante el SQL Saturday #124, llevado a cabo en Bogota, Colombia y con mas de 200 asistentes, formule una pregunta para la que aplica cualquier tipo de respuesta…
Usar un indice tipo Cluster o usar un indice tipo NonCluster, la pregunta fue rapida, sin mayores detalles, la verdad esperaba tener silencio en el auditorio, pero contrario a lo que yo pensaba, me encontre con multiples respuestas, podriamos decir que la mitad reaccionaron inmediatamente y a una sola voz dijeron CLUSTER…
Durante la charla decidi explicar de la mejor manera posible lo que es un indice Cluster y lo que es un Indice NonCluster, de esta forma las opiniones cambiaron y al final todos llegamos a un concenso… Que sea Cluster o NonCluster dependen unica y exclusivamente de los requerimientos del negocio y de los requerimientos tecnicos, no hay uno mejor que el otro, ni uno sera mas rapido que el otro, todo DEPENDE…
Indice tipo Cluster
Consiste en informacion organizada fisicamente, un ejemplo claro y rapido de este tipo de indices, es el indice principal de un libro, alli todo esta organizado fisicamente y cuando accedemos al dato lo hacemos de forma directa, sin embargo tiene implicaciones de rendimiento importante al momento de escribir o actualizar datos en una tabla o en el libro, veamoslo de la siguiente manera, si tomas un libro y haces un DELETE (Arrancas un par de hojas), seguramente actualizar el indice no sera muy complejo, simplemente vamos a las primeras paginas, ubicamos las hojas que eliminamos y podriamos tacharlas alli directamente, ahora bien, al mismo libro decidimos agregarle un nuevo capitulo entre el 1 y el 2, llamemoslo capitulo 1.5, luego tomamos el libro, lo mandamos desbaratar y agregamos las paginas de nuestro nuevo capitulo, para poder agregar este capitulo al indice se hace entonces necesario eliminar algunas paginas del indice, editarlas, abrirle espacio al nuevo capitulo y reacomodar la informacion que ya se encontraba contenida en ese indice…
| Comportamiento en el motor | Ejemplo de indice tipo Cluster |
indice tipo noncluster
El indice tipo NonCluster se asemeja entonces al glosario de un libro, en este la informacion no se encuentra almacenada fisicamente y funciona bajo los mismos parametros de un apuntador, sabemos que informacion es y donde se encuentra, una vez identificamos esta informacion debemos ir hasta alli…
Una de las grandes ventajas del indice tipo NonCluster es la velocidad de escritura y actualizacion, sin embargo en la busqueda no es tan efectivo como el tipo Cluster.
| Comportamiento en el motor | Ejemplo de indice tipo NonCluster |
Hasta la proxima
Monday, March 12, 2012
SSIS Fuzzy Lookup Add-in for Excel (From Microsoft Research)
Bueno, en esos dias en los que no tienes nada que hacer y encuentras un tool interesante, navegando y leyendo por ahi me encontre con un componente desarrollado por Microsoft Research en donde llevan toda la funcionalidad del Fuzzy Lookup de SQL Server Integration Services directamente a Excel.
Para descargarlo pueden ir a:
http://www.microsoft.com/download/en/details.aspx?id=15011
Ahora bien, la instalacion es supremamente simple, lo descomprimen y lanzan el archivo setup.exe, no es necesario tener Excel cerrado, ya que despues de la instalacion y al abrir excel, este lanza una ventana en donde pregunta si queremos instalar el Fuzzy lookup en nuestro excel, al final tendremos un nuevo menu en nuestro excel.
La utilizacion del componente es igualmente sencilla, simplemente damos clic en la pestaña y abrimos las opciones del mismo, estas se reducen a 1 opcion.
Damos clic en esta opcion y ya podremos trabajar con el componente, al dar clic alli se abre un menu al mejor estilo Smart Documents.
El componente esta en su primer version, aun no podemos hacer cosas como hacer lookup entre 2 libros distintos o contra una base de datos de forma nativa, sin embargo hay trucos para esto como una conexion de datos y demas.
Tampoco podemos hacerlo contra un segmento de datos, debe hacerse contra tablas directamente, para crear una tabla en excel y no complicarnos tanto la vida, simplemente llenen los datos en una hoja de datos normal y luego le aplican un formato de tabla, de esa manera lo pueden hacer de forma rapida y simple.
Yo cree rapidamente una tabla con 4 ciudades de Colombia
Ahora cree una tabla con las mismas ciudades pero con errores tipograficos y ortograficos.
Ahora simplemente lo que debemos hacer es seleccionar nuestras tablas, el orden si importa, normalmente vemos que a la izquierda va la tabla fuente o la tabla maestra, a la derecha normalmente va la tabla que se analizara, sin embargo este componente funciona al contrario, a la izquierda (Left) debemos seleccionar la tabla que contiene los datos que se analizaran, a la derecha debe ir la tabla maestra.
Ahora simplemente damos clic en Go.
Al dar clic el componente genera nuevas columnas en donde se devuelve la similitud con el dato de la siguiente manera
Esta similitud esta dada en porcentaje, asi que el numero mas cercano a 1 es el mas exacto.
Con esto pueden hacer luego un Vlookup y reemplazar los datos “Sucios” por los datos buenos.
Si tienen alguna duda dejenmelo saber a traves de los comentarios.
John
Friday, November 11, 2011
IT Camp

Participa en el IT Camp 2011 y {Actívate} como un ID Cloud Champ
Conoce, aprende y prueba las tecnologías más robustas para tus implementaciones de Nube Privada:
1. Asiste a los Webcast:
- Miércoles 16 de Noviembre (6:30pm-8:30pm): Nube Privada, la evolución de los centros de cómputo
- Miércoles 23 de Noviembre (6:30pm-8:30pm): SQL Server 2012: Una nueva plataforma de base de datos lista para la nube
2. Asiste al IT Camp 2011:
Bogotá
Fecha: 6 de Diciembre
Lugar: Hotel RoyalPark Metrotel
Calle 74 No. 13 – 27
| Hora | Private Cloud | SQL Server 2012 |
| 1:00PM – 2:00PM | Registro | Registro |
| 2:00PM – 2:30PM | Introduccion | Introduccion |
| 2:30PM – 3:45PM | Laboratorio Parte 1 | Laboratorio Parte 1 |
| 3:45PM – 4:15PM | Refrigerio | Refrigerio |
| 4:15PM – 5:30PM | Laboratorio Parte 2 | Laboratorio Parte 2 |
| 5:30PM – 6:30PM | Cierre del evento | Cierre del evento |
InnovaIT
Hey, el próximo 17 y 18 de Noviembre estaremos en Venezuela, hablaremos de.
- Inteligencia de negocios en SQL Server 2008 R2
- Oracle Exadata vs HP Enterprise Database Consolidation Appliance
- Inteligencia de negocios en SQL Server 2012
Si estas en Venezuela, recuerda que puedes participar ingresando a http://www.microsoft.com/venezuela/innovait/
Nos vemos allá!
Saludos
Como aplicar un Service Pack o un Hotfix en un Cluster de SQL Server 2008 o 2008R2
Bien, hasta SQL Server 2005 el proceso se hacia aplicando los parches sobre el nodo activo, esto a partir de SQL Server 2008 cambio radicalmente, a partir de ahora y con el fin de disminuir los tiempos fuera de linea, el proceso se hace al reves, es decir.
- Ponga todos los recursos en uno de los nodos, al que llamaremos NODO1
- Vaya al nodo alterno (NODO2) y ejecute las actualizaciones
- Instale todas las actualizaciones en el NODO2
- Reinicie el NODO2
- Vaya al NODO1
- Mueva todos los servicios hacia el NODO2
- En el NODO1 ejecute e instale todas las actualizaciones
- Reinicie el NODO1
- Listo!!

Saludos
Friday, October 28, 2011
Configurar autenticación mixta en SQL Server sin el Management Studio
Hace poco me encontré con un pequeño inconveniente, necesitaba cambiar el modelo de autenticación de un servidor de Windows a Mixta, sin embargo el cliente no tenía un SSMS y la verdad no había llevado mi maquina… así que tuve que buscar la forma de hacerlo a mano… es un poco riesgoso pero funciona a la perfección…
El proceso es simple, deben abrir el editor de registro (Háganlo bajo su propio riesgo)
1. Regedit.exe
2. Vayan a la carpeta
HKLM\Software\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer
3. Ahi veran la llave LoginMode
4. Editen la llave y en modo decimal cámbienlo de 1 a 2… 1 equivale a autenticación Windows, 2 equivale a autenticación Mixta
5. Reinicien el servicio de SQL Server (Recuerden, es bajo su propio riesgo)
Saludos
Tuesday, October 18, 2011
Como migrar usuarios y passwords desde SQL Server 2000 hacia SQL Server 2008 y 2008 R2
Hace poco en una migración me encontré con este dilema, típicamente usaba un script planteado por Msft que ayudaba en este proceso http://support.microsoft.com/kb/246133/en-us, sin embargo y por esas cosas del destino o del motor, este script no funcionó correctamente, acudí a la migración a través de SSIS, que nos permite a través de una tarea hacer transferencia de logins entre instancias de SQL Server, sin embargo no soy muy amante de ese tipo de soluciones y concluí que debía existir una opción adicional, que si SSIS podía, pues yo también podía por otro lado… la solución es bastante simple a decir verdad y tiene muchas menos líneas de código que el originalmente planteado por Msft, lo que si les puedo asegurar es que la migración fue exitosa.
Step by step
1. Migren los usuarios ANTES de migrar cualquier base de datos
2. Ejecuten el siguiente script en el SQL Server 2000 (Aun no he probado si funciona en 2005 o 2008)
select 'CREATE LOGIN [' + l.name + '] WITH PASSWORD = ', (CAST(l.password as varbinary(256))), ' HASHED, SID = ', CAST(l.sid as varbinary), ', CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF ' + 'GO ' from master..syslogins l where l.isntname + l.isntgroup = 0
3. El resultado, cópienlo y péguenlo en el nuevo server (Para mi caso un SQL Server 208 R2)
4. Ejecuten el Script que tienen como resultado
Voila!… sus usuarios y passwords están migrados y a salvo!