Hola Mundo.

Después de algunas semanitas de ausencia vuelvo otra vez con un tip para solucionar un problema bastante recurrente en la instalacion de SQL Server cuando se realiza sobre Windows que no coincide con el medio de instalación.

Este error aparece por primera vez en SQL Server 2008 R2 por una nueva política de localización.

El error es este:

Error Localizacion SQL Server Instalacion
Error Localizacion SQL Server Instalacion

El error dice: SQL Server setup media does not support the language of the OS or does not have ENU localized files. Use the matching language-specific SQL Server media or change the OS locale through control panel.

Solucionarlo es muy simple:

  • Ir a Panel de Control
  • Abrir propiedades de Region y Localización
  • Cambiar el formato y la ubicacion a la raiz del idioma del sistema operativo. Por ejemplo, si estás usando es-cl (Español de Chile) debes cambiarlo a es-es (Español de España).
  • Aplicar cambios, guardar y cerrar.
  • Volver a intentar la instalación.

Con este workaround no debieras tener problemas.

 

 

 

Hace un par de años, escribí como usar Tor en Windows . En el post hablaba sobre como configurar tor para poder usarlo en Windows y navegar de forma anónima.

Quizá instalar los componentes por separado sea incómodo y engorroso. Peor aun, configurar el proxy y después dejarlo como estaba cuando lo único que queríamos era navegar de forma anónima o pasar por la red de tor.

Menos mal que hace algún tiempo existe un paquete que contiene  todo listo para llegar y usar.  Contiene un navegador ya configurado y todo corriendo para tenerlo en el equipo o llevarlo en un flash drive a cualquier parte.

Está disponible para Windows, MacOSX y Linux. En este link: https://www.torproject.org/projects/torbrowser.html están todas las opciones de descargas (donde podemos escoger el idioma) y están las instrucciones para cada sistema.

¡Ya no hay excusa para no probar Tor!

Este error es bastante recurrente cuando se quiere levantar Database Mirroring. Puede que al momento de configurarlo no se haya presentando ningún warning y ningún error en el proceso, pero si al momento de echar a andar el mecanismo de mirroring aparece este error, es porque no se realizó un paso previo.

Error 1478
Error 1478

Así se ve el error y la solución es re simple. Solo hay que respaldar el log de transacciones de la base de datos primaria y restaurar este respaldo en la base de datos de espejo con la opción de NORECOVERY.
Una vez que esta tarea se ha realizado, ya se puede levantar Mirroring y debiéramos tener problemas.

Hoy estaba jugando con mi SQL Server, obviamente en entorno de pruebas,  y tuve la “brillante” idea de duplicar los datos de una tablas de hecho de AdventureWorksDW. Aparte de lograr que los registros se duplicaran, noté bastantes cosas que quiero compartir con ustedes.

Importante: Antes de duplicar los datos dentro de la misma tabla, debes desactivar las claves primarias. De lo contrario, arrojará un error. Recomiendo copiar los datos hacia una tabla temporal.

Sentencias:

INSERT INTO tabla SELECT * FROM tabla
Esta es la sentencia básica. Lo que hace es seleccionar todos los registros y volverlos a insertar. O sea, si se tienen 10 registros, insertará esos mismos 10 registros, quedando así con 20 registros. Ésta es la forma mas básica que hay.

INSERT INTO tabla SELECT top 100 * FROM tabla
Esta selecciona los 100 primeros registros y las inserta. O sea, si se tienen 1000 registros, insertará los primeros 100 registros, quedando así con 1100 registros.

INSERT INTO tabla SELECT * FROM tabla WHERE campo1 = 'algo'
Esta sentencia selecciona e inserta solo los registros donde la clausula WHERE se cumpla. No importa cuantos registros sean.

INSERT INTO tabla SELECT top 100 * FROM tabla WHERE campo1 = 'algo'
Esta hace lo mismo que la anterior, pero solo tomando en cuenta los 100 primeros registros.

Nunca hagas esto (a no ser de que sepas muy bien lo que estás haciendo)

Puedes hacer un sencillito script que duplique de forma exponencial los registros, causando un excesivo uso de disco y recursos de memoria. Con esta operación, el log de transacciones crece de forma desmesurada.


DECLARE @contador int
SET @contador = 0
WHILE (@contador < 10)
BEGIN
INSERT INTO tabla SELECT * FROM tabla
SET @contador = @contador + 1
END
GO

Si tenemos una tabla de 1000 registros, la primera vez insertará 1000 registros, quedando así con 2000 registros. La segunda vez, seleccionará los 2000 registros y los insertará, quedando así con 4000 registros. Esto ocurrirá hasta que se cumpla la condición (Imagina este escenario, pero  partiendo con 60000 registros)

Para finalizar quiero exponer algunas conclusiones:

  1. Nunca realices experimentos así en entornos de producción.
  2. Siempre ten un respaldo de las bases de datos.
  3. Ten controlado el crecimiento del log de transacciones. Hay mucha documentación al respecto.
  4. Si vas a duplicar los datos de tu tabla, hazlo de manera controlada y no de forma brutal (como lo hice yo)

Chau!

Mayo ha sido un mes movido, por lo menos, para mi. He tenido bastantes actividades, tanto en el trabajo como en mi vida personal, que me tenían un poco privado de tiempo para compartir alguna cosa poca.

Por ejemplo, estuve en Concepción la semana pasada hablando sobre SQL Server (¡Que novedad! ¿o no?) y aprobé el examen para la licencia de radioaficionado. Desde ahora soy CD6375. Supongo que a nadie le importa esto, así que vamos a lo importante.

Comprimir respaldos se realiza por los siguientes motivos:

  • Toma menos tiempo generar uno.
  • Ocupa menos espacio en disco.
  • Si respaldamos en cintas, ocupa menos espacio en cinta, por lo tanto, ocupará menos respaldo en el lugar donde guardemos las cintas.
  • Toma menos tiempo hacer una restauración desde un respaldo.

En este ejemplo solo tocaré la creación de respaldos. Dejemos la cháchara y vamos al choque.


--Estadisticas
set statistics io on
set statistics time on

--Respaldo sin comprimir
backup database AdventureWorks2012_Data
to disk = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\bak1.bak'
with init, no_compression

--Limpiar caché
dbcc freeproccache

--Respaldo con comprimir
backup database AdventureWorks2012_Data
to disk = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\bak2.bak'
with init, compression

El script tiene varias partes:

  1. Estadisticas: Activa las estadisticas del servidor para la transaccion.
  2. Respaldo sin comprimir: Crea un respaldo comun y corriente de la base de datos. Respaldo sin tratamiento
  3. Liberar Caché: Limpia la caché.
  4. Respaldo con “comprimir”: Crea un respaldo comprimido de la base de datos.

Esto suena muy lindo. Tal para no creer. Veamos algunas imágenes

Estadisticas sin comprimir
Estadisticas sin comprimir

 

Estadisticas con compresión habilitada
Estadisticas con compresión habilitada

 

Propiedades archivo de respaldo sin comprimir
Propiedades archivo de respaldo sin comprimir

 

Propiedades archivo de respaldo comprimido
Propiedades archivo de respaldo comprimido

Si no les gusta copiar y pegar, pueden descargar el archivo .sql desde aqui: http://www.4shared.com/document/nN-PRmL1/demo_compresion_respaldos.html