Entradas

Mostrando las entradas etiquetadas como windows server

Azure SQL Database DTU Calculator en español

Imagen
Si has llegado a esta entrada es porque tienes una base de datos SQL Server que quieres (o piensas) migrar a Azure SQL Database y deseas saber cuales de los planes tendrías que elegir para ello, y sobre todo, cuanto tendrías que invertir. Si es así estas en el sitio correcto. Azure dispone de 3 planes de alojamiento: Azure SQL Database, Elastic Database y Azure SQL Data Warehouse ; en esta entrada me centraré en los dos primeros.  Cuando migras a la nube de Microsoft desde tu plataforma local (on premise) debes olvidarte de cores y RAM, lo importante son las unidades de rendimiento de base de datos o en sus siglas en inglés DTU, una equivalencia aproximada sería: 1 DTU = 1 transacción por segundo. ¿Cómo calcular cuántas DTU necesita mi base de datos?  Muy sencillo, existe una herramienta para ello llamada  Azure SQL Database DTU Calculator  donde te descargas un script PowerShell que monitorizará durante una hora tu consumo de CPU, las lecturas ...

Servidores web para Windows

Imagen
Llevo ya muchos años trabajando con servidores web, de ellos bastante tiempo sobre Windows y es bastante complicado. Llegar a una configuración óptima en Windows solo puede ser con prueba y error, no hay una receta mágica que te lo permita, pero no por ello son malos servidores, en mi opinión creo que se han dejado de lado. Windows representa sólo el 32,2 % en los sistemas operativos que mantienen servidores web. ¿Por qué tan poca cuota? Para montar un servidor web bajo Windows sólo existen 2 excusas potentes: Trabajas con ASP Tu base de datos está en Microsoft SQL Server Para el punto 1 no hay alternativa posible, ASP necesita IIS y por ello Windows. Por el contrario el punto 2 es más susceptible a cambio (y más ahora con los nuevos desarrollos en los que la propia Microsoft está involucrada como el driver ODBC y la adaptación a Linux del propio SQL Server ). Para trabajar con SQL Server no es necesario ASP, puedes acceder desde PHP con ODBC, eso si...

Eliminar muchas carpetas vacías en Windows

Imagen
Cuando digo muchas digo miles, imaginad un disco duro con más de un millón de carpetas y de ellas vacías más de la mitad, es mi caso. La herramienta que he utilizado se llama Remove Empty Directories y hace exactamente eso, a vosotros os tocará juzgar si es rápido o no. La máquina dónde se han realizado las pruebas es un Windows Server 2008 R2 Standard SP1 x64, con 2 cores Intel Xeon E5620 2.4GHZ y 16 GB de RAM. En la siguiente tabla os dejo los tiempo que ha tardado en mi caso al identificar y luego borrar todos los directorios vacíos. Recomiendo en la opciones de la aplicación borrar directamente los directorios en vez de enviarlos a la papelera. carpetas vacías identificar borrado tiempo carpetas/s tiempo carpetas/s 1001465 468318 0:07:40 2177,10     977874 444727 0:07:15 2247,99 11:36:54 10,64 534612 6807 0:02:30 3564,08 0:10:39 10,65 527822 ...

Alta disponibilidad con un espejo en SQL Server

SQL Server tiene varias formas para que dispongamos de alta disponibilidad en nuestras bases de datos, en este post veremos una de ellas: la creación de un espejo. Para mi la creación de un espejo vs un clúster es una preferencia personal, creo que un clúster es más complejo de mantener y gestionar, es más caro porque ambas máquinas comparten el almacenamiento y por lo menos mi experiencia con SQL Server 2008 R2 no fue muy buena y sin un soporte premiun por parte de Microsoft los fallos son difícilmente corregibles. En cambio un mirror o espejo es sencillo de configurar y pueden ser dos máquinas totalmente independientes. ¿Por qué crear un espejo en SQL Server? Porque este método permite hacer una réplica exacta de una base de datos de un servidor a otro. La gran ventaja de este método es que permite el failover automático sin intervención humana (siempre que se instale un tercer servidor witness). La desventaja del mirror es que sólo podemos tener una máquina secundaria o mirro...

Error 503 Collabnet Subversion Edge

Si tienes instalado Collabnet Subversion Edge y por algún motivo al acceder a http://localhost:3343/csvn recibes el siguiente error: HTTP ERROR: 503 Problem accessing /csvn/. Reason: Service Unavailable Powered by Jetty:// Entonces este artículo es para ti, este post es una versión actualizada de esta url y es compatible con Collabnet Subversion Edge 5 (en este momento la actual es la 5.0.1). Los pasos son los siguientes (seguirlos uno a uno porque no vale de nada reinstalar) Lo primero que debemos hacer es crear un backup de los repositorios c:\csvn\data\repositories y los archivos de configuración que se encuentran en c:\csvn\data\conf: svn_auth_file (usuarios y passwords) y svn_access_file (accesos). Si reinstalas el Collabnet este ultimo archivo es el único que se sobrescribe por eso es necesario crear el backup, aunque como bien dije antes reinstalar no vale de nada. Desinstalar Collabnet Subversion Edge (CSE) y reiniciar. Seguirán quedando archivos en la carpeta c:\c...

SSMS ya tiene su propia ruta de actualizaciones

SQL Server 2016 ya está en la fase 2 de beta técnica y ha sido lanzado al público con una licencia de prueba de 180 días y cargado de novedades. Una de las más importantes, y sobre la que hablaré en este post, es la nueva ruta de actualizaciones que recibe SQL Server Management Studio (SSMS). Era ya muy necesario el proceso de modernización de SQL Server Management Studio como la principal aplicación / herramienta de gestión para interactuar con la plataforma insignia de base de datos de Microsoft, se había quedado a la zaga del resto de avances en el producto. Desde el año 2005 cuando se libera SSMS como la evolución de SQL Server Enterprise Manager solamente parecía actualizarse con el fin de proporcionar todas las funcionalidades añadidas como características a SQL Server. Finalmente comienza a parecer que el equipo de ingeniería de SQL Server ha hecho caso y ha comenzado a aumentar, no sólo los recursos y el personal de desarrollo necesarios, sino también proporcionar una ma...

Consultas útiles SQL Server

Muchas veces necesitamos conocer las tablas, campos, claves, etc. de una base de datos en concreto, todos estos datos están disponibles en tablas de sistema de SQL Server, veamos algunos ejemplos. Devolver las tablas de la base de datos actual con sus claves primarias SELECT i1.TABLE_NAME, i2.COLUMN_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1 INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY' Devolver los campos de una tabla concreta que son claves foráneas y la tabla a la que hace referencia SELECT CU.COLUMN_NAME, PK.TABLE_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME WHERE FK.TABLE_NAME = ? Devo...

Instalando ImageMagick con PHP y Windows

Imagen
En este tutorial veremos como instalar paso a paso el software ImageMagick en Windows y la librería de PHP asociada. Software de mi servidor Windows Server 2008 R2 Standard Español x64 SP1 XAMPP Version: 1.8.3 Apache x86 2.4.7 VC11 PHP 5.5.6 x86 TS VC11 Software a instalar ImageMagick-6.9.1-2-Q16-x86-dll php_imagick-3.3.0rc1-5.5-ts-vc11-x86 Enlaces de descarga para ImageMagick El software se puede descargar desde este enlace o desde la página oficial . Los drivers para PHP se pueden descargar también desde diferentes ubicaciones y en diferentes versiones, up opté por la última en el momento de crear el post la 3.3.0 RC1 , pero también es posible descargar la 3.2.0 RC1 o la versión estable 3.1.2 . Todas se pueden descargar desde la siguiente ruta alternativa . Instalación de ImageMagick con XAMPP Realmente lo de que sea sobre XAMPP da igual, lo único que tendríamos que buscar las rutas y directorios específicos de nuestra instalación de PHP. Instalación del soft...

Programar un trabajo en SQL Server anualmente

El agente de SQL Server no trae por defecto (ni en la versión de 2014) la opción de crear trabajos programados que se ejecuten anualmente, para ello tenemos que recurrir a un truco que si bien es lógico no es trivial verlo. La solución para ejecutar un trabajo programado de manera anual en SQL Server es ejecutarlo un día concreto cada 12 meses. Os dejo la pantalla resaltada con las opciones que habría que señalar, en el ejemplo se ejecuta a las 00:00:01 todos los primero de enero (el primer día del año).

Trabajar con Excel en SQL Server

Muchas veces necesitamos obtener datos desde un Excel e importarlos en una tabla de nuestra base de datos o sencillamente utilizarlos con alguna consulta, si este es tu caso este tutorial te puede ayudar a trabajar con archivos Excel como si fueran una base de datos y cada una de sus hojas como una tabla. Lo primero que tienes que tener instado en el servidor donde está SQL Server (no vale en la máquina remota donde haces las consultas) es el Office o en su defecto 2007 Office System Driver Data Connectivity Components (solo 32 bits) o Microsoft Access Database Engine 2010 Redistributable (versiones de 32 y 64 bits). Es muy muy importante tener esto instalado para evitar el siguiente error The OLE DB provider "Microsoft.ACE.OLEDB.12.0" has not been registered . Más importante aún es tener la versión correcta, si tu SQL Server es de 64 bits solo puedes instalar de 64 bits, si es de 32 bits lo mismo, en caso contrario tendrías el siguiente error OLE DB provider 'Micr...

XAMPP Call to undefined function ldap_connect()

Imagen
Para activar la librería LDAP en cualquier entorno Windows debemos seguir los siguientes pasos: Activar la extensión en el archivo php.ini Agregar a la variable de sistema PATH la ruta de PHP. Cito el manual de PHP Para que esta extensión funcione, hay unos ficheros DLL que deben estar disponibles en el sistema de Windows PATH . Para más información en como hacer esto, vea la FAQ titulada " Como añadir mi directorio PHP en el PATH de Windows ". Aunque copiar los ficheros DLL desde el directorio PHP al directorio del sistema de Windows también funciona (porque el directorio del sistema por defecto es el PATH del sistema), esto no se recomienda. Esta extensión requiere que los siguientes ficheros estén en el PATH : libeay32.dll y ssleay32.dll Las versiones anteriores de PHP 4.3.0 requieren adicionalmente libsasl.dll . Para activar la librería en el php.ini lo único que tenemos que hacer es descomentar (eliminar el ; inicial) la siguiente línea ;extension=php_ldap...

SQL Server default values

Si alguna vez habéis querido insertar en una tabla solo los valores por defecto , en SQL es muy fácil hacerlo con el siguiente comando: INSERT INTO tabla DEFAULT VALUES Para ver las opciones del comando insert en la web de Microsoft hay una información muy bien detallada.

SQL Server OUTPUT

Imagen
El comando OUTPUT es uno de los más interesantes y útiles en SQL Server, se utiliza para devolver los datos de las filas insertadas, actualizadas o eliminadas. Por ejemplo, para obtener el id de una nueva fila insertada: INSERT INTO tabla (campos) OUTPUT inserted.tabla_id VALUES (valores) La tabla inserted es una tabla temporal que almacena los datos de la fila insertada incluyendo en nuevo ID. Al actualizar debemos utilizar esta misma palabra clave y lo que devuelve son los datos de la fila al modificarse. O sea al insertar u actualizar obtenemos los datos nuevos y al eliminar obtendremos los antiguos usando el comando deleted. Sin dudas el uso más frecuente es obtener la clave única al insertar datos en una tabla sin necesidad de ejecutar una consulta adicional .

SQL Server tipos de datos

Imagen
Más que escribir y describir sobre los tipos de datos en SQL Server , en este post pretendo aclarar o definir algunas curiosidades y/o novedades de los tipos de datos en las nuevas versiones de SQL Server , como por ejemplo la 2008 R2 y la recién estrenada 2012. Tipos de datos deprecados (obsoletos) Desde SQL Server 2008 R2 los tipos de datos timestamp (hablaré más adelante sobre él) y text (ntext también) se encuentran obsoletos y en futuras versiones dejaran de existir (en la 2012 aún existen pero solo por mera compatibilidad). Timestamp Los tipos de datos timestamp para los que estamos acostumbrados a MySQL pensamos que va a hacer lo mismo que en este tipo de servidores, actualizar la fecha cada vez que se inserta o actualiza una fila. La primera diferencia es que timestamp en SQL Server nunca ha almacenado una fecha, es un valor entero único pero no corresponde con una fecha, en las nuevas versiones el tipo de campo que lo viene a sustituir es el uniqueid. Text y Ntext Los ...

SQL Server 2008 registro de transacciones

Imagen
El registro de transacciones en SQL Server es el archivo que registra como bien dice su nombre todas las transacciones de una tabla y sus modificaciones en la base de datos y si no le ponemos un límite al mismo este crecerá de manera indefinida llegando incluso a colapsar todo el espacio libre de nuestro almacenamiento. La recomendación de Microsoft es la siguiente: El registro de transacciones se debe truncar periódicamente para evitar que se llene. Sin embargo, algunos factores pueden retrasar el truncamiento del registro, por lo que es importante supervisar el tamaño del registro. Algunas operaciones se pueden registrar mínimamente para reducir su impacto sobre el tamaño del registro de transacciones. ¿Cómo saber el espacio ocupado por cada registro de transacciones? Ejecutamos la siguiente consulta: DBCC SQLPERF(LOGSPACE); Esto nos devolverá una tabla con los siguientes campos: nombre de la base de datos, tamaño del log en MB, espacio del log utilizado en porcentaje y el est...

Optimizar Navision en SQL Server

Imagen
Estas son algunas pautas a tener en cuenta para optimizar la base de datos de Microsoft Dynamics Nav (Navision) en Microsoft SQL Server. Dynamics NAV Default Isolation Level Con el lanzamiento de Microsoft Dynamics NAV 5.00 SP1 (Build 30482 / KB 979135) y posteriores tenemos la opción de cambiar el nivel de aislamiento predeterminado de NAV de SERIALIZABLE a REPEATABLEREAD. SERIALIZABLE: Este es el nivel de aislamiento más restrictivo. Cuando se utiliza, los valores fantasmas no pueden ocurrir pues impide que otros usuarios actualicen o inserten filas en el conjunto de datos hasta que la transacción se complete. REPEATABLEREAD: Cuando se utiliza, las lecturas ‘sucias’ y no repetibles no pueden ocurrir. Esto significa que los bloqueos se colocarán en todos los datos que se utilizan en una consulta y otra transacción no puede actualizarlos. En resumen SERIALIZABLE es más restrictiva y bloquea más registros que REPEATABLEREAD que puede causar más tiempos de espera de bloqueos y desb...

Recomendaciones respecto a SQL Server

Imagen
Estas son algunas recomendaciones que me pasaron hace un tiempo sobre parámetros para optimizar SQL Server, en realidad son la traducción de esas recomendaciones, espero que os sirvan de ayuda, a mi la verdad no mucho. Auto-Grow Auto-Growths (Auto-crecimientos) de la base de datos o del registro de transacciones en entornos de producción puede degradar el rendimiento pues todas las transacciones deben hacer cola y esperar al SQL Server para hacer crecer el archivo de registro o de datos antes de que pueda comenzar a procesar las transacciones de nuevo. Esto puede crear un cuello de botella. Recomendamos fuertemente el crecimiento de los datos y del archivo de registro durante las horas pico entre un 10 a 25% del tamaño actual. No recomendamos desactivar Auto-Grow pues en casos de emergencia es mejor tenerlo activado que quedarse sin espacio y poner la base de datos fuera de servicio. Trace Flag 4119 Si está ejecutando SQL Server 2005, le recomendamos que active el indicador de tr...

Procedimientos vs T-SQL en SQL Server

Imagen
¿Por qué recomendar el uso de los procedimientos almacenados en lugar de las sentencias T-SQL ? Los procedimientos almacenados deben de ser una de las herramientas reinas de los motores de bases de datos (cómo es el caso de SQL Server) y de los DBA ¿Por qué? Mayor optimización para el motor : Este mismo no debe compilar (a menos que se lo indiquemos) cada instrucción T-SQL, sino que ya la tiene compilada y esto genera mucho mayor rendimiento. También se da el caso que el procedimiento reside en nuestro servidor por lo cual el trafico de red es muy inferior al que podemos hacer si mandamos las T-SQL desde nuestro cliente. Seguridad : Los procedimientos no solo son buenos por rendimiento, sino que nos permiten hacer las operaciones no directamente sobre nuestras tablas. Reutilización de código : El uso de procedimientos es muy útil para esto, si la consulta de rangos de fechas para buscar los pedidos en firme de un cliente por ejemplo, la necesitamos en mas de una aplicación, e...

SQL Server Named Pipes Provider error: 40

Las configuraciones de SQL Server para conexiones remotas dependen de muchos factores que ya he comentado en este blog en el post problemas en el acceso remoto a SQL Server , el tema es que en ese post hablé de los problemas de login por contraseñas incorrectas, usuarios inactivos o tipo de autentificación erróneas, todos estos casos posibles pero no tienen nada que ver con el error que da título a este post de hoy. Este error se debe a 2 cosas fundamentales: una mala configuración del firewall de windows una mala configuración de sql server para tratar las conexiones remotas Son 2 factores muy generales pero los voy a tratar con el mayor grado de especificación posible. El entorno de trabajo de este post es en un Windows 2008 R2 Data Center Edition y un SQL Server 2008 R2 SP1. Mi objetivo final es conectarme remotamente a mi SQL Server por IP. El mensaje de error completo es el siguiente: An error has occurred while establishing a connection to the server....

SQL Server base de datos tempdb

Imagen
La base de datos del sistema tempdb es un recurso global disponible para todos los usuarios conectados a la instancia de SQL Server y se utiliza para incluir objetos de usuario temporales, objetos internos creados por el motor de base de datos de SQL Server y versiones de fila que se generan mediante transacciones. Por esta razón tener optimizada correctamente la configuración de esta base de datos es primordial para garantizar el rendimiento del sistema. Por ejemplo, si el tamaño de tempdb es demasiado pequeño, el procesamiento del sistema podría estar demasiado ocupado con el crecimiento automático de la base de datos y, por tanto, no podría satisfacer las necesidades de carga de trabajo cada vez que se inicia SQL Server. Para obtener más información, vea Optimizar el rendimiento de tempdb y Planeamiento de capacidad para tempdb . Otro factor de optimización a tener en cuenta es el número de archivos de datos de tempdb que debe ser igual al número de núcleos de CPU utilizada ...