Entradas

Mostrando entradas de 2011

Blogger, el historial y el buscador de Google

Imagen
Es impresionante la integración que están llevando a cabo en el buscador de Google con tal de ofrecerte servicios cada vez más personalizados, no cabe duda que cada vez la labor del SEO para el posicionamiento de según qué contenidos es más y más difícil. El otro día me ocurrió algo muy curioso mientras buscaba en Google y es que para un par de enlaces me salían mensajes como los siguientes: Tú has compartido esto en Blogger . · 8 Feb 2011 Visitaste esta página el 16/12/11. El primero de estos textos sale porque dentro de un post en este mismo blog puse un enlace a esa web, o sea no es un más 1 (+1) o un enlace compartido en su red social, es un enlace dentro del contenido del blog ¡alucinante! Estaré atrasado pero es que lo descubrí hace poco, no sé desde cuando Google lo lleva implementado. El segundo mensaje se basa en el Historial Web de Búsquedas si lo tienes habilitado con ellos. El resumen es que poco a poco Google va centralizando todos sus servicios para brindar búsq

Intercambio fichas Monopoly McDonald’s

Esto es uno de los proyectos que surgen en un almuerzo, una idea sencilla y de fácil implementación, técnicamente una web para facilitar el intercambio de fichas del Monopoly en la promoción del 30 Aniversario de McDonald’s España pues no es muy complicada pero no voy a negar que no deja de ser entretenida o al menos si tiene éxito instructiva. Sin enrollarme más os dejo la web para el intercambio de fichas del Monopoly en esta promoción del McDonald’s en 2011 como viene siendo costumbre en esta compañía los últimos años. Sólo recordar que la web anterior no es oficial y no tiene ninguna vinculación con McDonald's España ni con su promoción 30 Aniversario . Esta web no oficial tiene como único objetivo poner en contacto de manera particular a participantes de la promoción 30 Aniversario de McDonald's España para facilitar que se completen los grupos de fichas con propiedades del Monopoly de dicha promoción. El resto del aviso legal y la forma de utilizar esta aplicació

Gestionar clics en botones de redes sociales

Imagen
En cualquier sitio web que se implementen los nuevos botones me gusta (like) de Facebook , o +1 de Google , o tweet de Twitter podemos ver que en realidad todos se basan en el mismo sistema, un código javascript que construye un iframe y sobre el cuál es que se carga todo el código para gestionar nuestras interacciones en cada una de estas redes sociales. Acceder al contenido de estos iframe desde nuestra web con javascript no está permitido porque da un error del tipo Unsafe JavaScript attempt to access frame with URL tu dominio from frame with URL dominio del script. Domains, protocols and ports must match . Lo que viene a decirnos este error es la prohibición de acceder mediante javascript a un iframe con un dominio distinto al nuestro por temas de seguridad. Teniendo en cuenta esto la única solución que nos queda es depender de las interfaces de programación de aplicaciones (APIs) de cada una de estas redes sociales y ver si implementan funciones callback para capturar este t

Wordpress desactivar contribución Audio Link Player

Imagen
Cuando comencé con mi blog en wordpress lo hice instalando con ella el plugin Audio Link Player es cual trae por defecto una agresiva codificación para recordarnos a cada instante que le hagamos una donación a su cuenta de PayPal. Es bastante molesto que en el dashboard de tu Wordpress aparezca un widget recordándonos esta posible contribución y además en el menú de la izquierda aparece bien resaltado un enlace con el texto your contribution is still missing . Teniendo en cuenta lo molesto de este plugin pero a la vez que realmente no me compensa desinstalarlo he decidido modificarlo para eliminar esta petición de contribución o donación. Me atrevo a modificarlo y publicar estos cambios en el blog porque todos los temas y plugins de wordpress se publican bajo licencia GPL y por tanto pueden ser modificados libremente . Para eliminar el mensaje your contribution is still missing del Audio Link Player debemos ir al directorio del plugin ( wp-content/plugins/audio-link-player ) y m

Instalar paquetes RPM con YAST en openSUSE

Imagen
Yast es una de las mejores herramientas para la gestión de software en el mundo linux y admite no solo la instalación de paquetes a través de repositorios (lo cual es lo ideal) sino desde paquetes RPM. Instalar paquetes RPM con yast en openSuse es relativamente sencillo y lo único que tenemos que hacer es agregar el directorio local donde tenemos los paquetes RPM como un repositorio más. Para ello abrimos yast y en Software seleccionamos Software Repositories y una vez allí pulsamos la opción Add : Le decimos que queremos un repositorio que sea un directorio local: Y al pulsar next le damos a browse para localizar el directorio: De esta forma cuando volvamos a buscar software con yast el nos buscará también dentro de este directorio.

Claves únicas para valores nulos en MySQL

Imagen
Todo el que esté familiarizado con las bases de datos MySQL sabe que un campo que admita valores nulos no puede ser una clave única porque al insertar 2 veces el valor null esto daría error, sin embargo no es descabellado pensar que necesitemos un campo que admita valores nulos pero que en caso de no ser nulo sea único. Existen varias formas de hacer esto, una del lado del código y otra con las herramientas propias de la base de datos. La más compleja pero más eficiente es la segunda de estas opciones y es sobre la que trata este artículo. En esto post voy a hablar de la creación de 2 triggers (disparadores) para MySQL que validan que al insertar u actualizar una fila un determinado campo sea nulo o único. La sintaxis de los triggers en MySQL puede ser muy sencilla e intuitiva una vez la conoces pero como todos los lenguajes tiene su particularidad, lo importante es saber que no se pueden tener 2 trigger para un mismo evento en una tabla por tanto si queremos validar 2 campos de est

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

SQL Server alineación de discos

Imagen
La alineación del disco (Disk Alignment) puede tener un impacto significativo en el rendimiento del servidor. Una partición mal alineada sufre de un desfase entre los sectores lógicos y los físicos, aumentando así las operaciones de entrada / salida en un disco reduciendo su rendimiento. En una sola partición independiente, el problema no es tan grave, ya que tanto el sistema operativo como los programas funcionan sin inconveniente alguno. Pero bajo determinadas configuraciones, (por ejemplo, discos en modo RAID), la pérdida de rendimiento puede llegar a ser notable. Puesto que la configuración adecuada puede variar mucho según el fabricante, debes consultar con los manuales de cada uno para verificar la correcta alineación del disco y la configuración adecuada. Para el caso específico de un servidor de datos como SQL Server, la asignación o el ancho de banda debe ser mayor o igual a 8k, para evitar páginas mal alineadas o cortadas, se recomienda que esta cifra sea de 64k para que c

SQL Server: acceso exclusivo a la base de datos

Imagen
Muchas de las operaciones que se realizan sobre las bases de datos de SQL Server requieren el uso exclusivo de esta base de datos por parte del usuario que está ejecutando el proceso o la tarea, una de ella puede ser la restauración de la misma desde un backup. Por ser un requerimiento común es muy normal recibir este mensaje de error: Exclusive access could not be obtained because the database is in use Corregirlo no suele ser muy sencillo, más bien todo lo contrario y depende de los accesos que tenga esa base de datos, aquí os dejaré algunos pasos para identificar e intentar garantizar ese acceso exclusivo . Lo primero que debemos hacer es terminar todas las conexiones existentes a la base de datos y ello lo haremos con la siguiente instrucción: USE database GO ALTER DATABASE database SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE database SET MULTI_USER GO También podemos ejecutar esta opción utilizando el procedimiento almacenado sp_dboption: Use master go sp_db

SQL Server: listados de bases de datos y tablas

Imagen
Para saber cuales son todas las bases de datos de un servidor SQL Server tenemos estas dos opciones: EXEC sp_helpdb SELECT * FROM master.dbo.sysdatabases; Ambas nos devuelven el mismo listado lo único que cambia son los datos que nos muestran, la consulta SQL es mucho más amplia en datos que el procedimiento almacenado. Importante: ambas deben de ser ejecutadas bajo master: USE master GO. Para saber cuales son todas las tablas de una base de datos en SQL Server lo primero que debes hacer es tener abierta la ventana de consulta bajo tu base de datos (USE DB_name) y luego ejecutar una de estas dos opciones: EXEC sp_tables SELECT * FROM information_schema.tables; Y por último para saber todas las columnas de una tabla en SQL Server puedes ejecutar el procedimiento almacenado sp_columns. Las opciones son ilimitadas y ahora también existe la posibilidad de generar un solo archivo SQL que puede extraer todo lo que necesitas incluso extraer aparte de todas las estructuras, todo los

SQL Server: reorganizar y volver a generar índices

Imagen
Según la propia Microsoft : El Motor de base de datos de SQL Server mantiene índices automáticamente cada vez que inserta, actualiza o elimina operaciones realizadas en los datos subyacentes. Con el tiempo, estas modificaciones pueden hacer que la información del índice se disperse por la base de datos (se fragmente). La fragmentación ocurre cuando los índices tienen páginas en las que la ordenación lógica, basada en el valor de clave, no coincide con la ordenación física dentro del archivo de datos. Los índices muy fragmentados pueden reducir el rendimiento de la consulta y ralentizar la respuesta de la aplicación. Se puede solucionar la fragmentación del índice reorganizándolo o volviéndolo a generar pero el primer paso es identificar los índices fragmentados, para ello podemos ejecutar la siguiente consulta SQL que nos sacará un listado de los índices, las tablas a las que pertenecen y el nivel de fragmentación de los mismos: SELECT a.object_id as table_id, OBJECT_NAME(a.object

Algunos cambios en PHP a partir de la 5.3

Imagen
Los que migramos PHP de la versión 5.2.x a cualquiera superior a la 5.3 nos encontramos en el log con algunos errores y alertas que en realidad son muy sencillos de corregir, en este post veremos dos: safe mode y default time zone. PHP Deprecated:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater El modo seguro de PHP era un intento de resolver el problema de seguridad en un servidor compartido pero a partir de la versión 5.3 de PHP se dieron cuenta los desarrolladores que es arquitectónicamente incorrecto tratar de resolver este problema a nivel de PHP y como consecuencia han quedado deprecadas estas funciones. Para corregir este error debemos ir al archivo php.ini y editar la directiva Safe Mode de esta forma: ; Safe Mode ; safe_mode = Off PHP Warning:  date(): It is not safe to rely on the system's timezone settings. El error completo es el siguiente: You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In ca

Desventajas de minimizar código JavaScript con Minify

Imagen
Minify es una utilidad escrita en PHP5 que permite eliminar los caracteres innecesarios del código fuente sin cambiar su funcionalidad permitiendo incluir en una sola línea de código múltiples archivos JavaScript o CSS reduciendo con ello el tiempo de carga de nuestra página web. Pero todo lo que brilla no es oro y aunque llevo tiempo utilizando Minify hay algunas pegas a tener en cuenta: 1.- hay que tenerlo instalado en el entorno real y en el de desarrollo porque sino a la hora de combinar los archivos hay que estar descartando estas líneas de código 2.- los debuggers de los principales navegadores son incapaces de encontrar correctamente el archivo y en algunos casos la línea de error cuando se produce un fallo en JavaScript lo cual hace más complicada la tarea de corrección de errores 3.- puede dar problemas con las codificaciones de los archivos comprimidos 4.- debes tener configurado apache correctamente con una librería adicional (redirect) que no viene instalada por defecto 5

Preparar y ejecutar consultas con SQL Server driver para PHP

Imagen
Los que acostumbramos a utilizar MySQL no estamos familiarizados con esta sintaxis de preparar y ejecutar consultas que tiene el driver de Microsoft para PHP. En este post intento mostrar cómo usar el driver de SQL Server para PHP para ejecutar una instrucción preparada varias veces. Esto es mediante la combinación de sqlsrv_prepare y sqlsrv_execute , y el resultado es una instrucción que se compila una vez en el servidor y se puede ejecutar después varias veces con distintos valores de parámetro. En el caso de consultas únicas, se recomienda el uso de sqlsrv_query que es a lo que estamos acostumbrados en MySQL. Al preparar una instrucción que usa variables como parámetros, las variables se enlazan a la instrucción. Eso significa que si se actualizan los valores de las variables, la próxima vez que se ejecute la instrucción se ejecutará con los valores de parámetros actualizados. En el siguiente enlace tenemos un ejemplo de cómo utilizar estas funciones para ejecutar una consul

Navegación sincronizada en Total Commander

Imagen
Para los que no utilicen el Total Commander solo comentaré que es una excelente utilidad para la gestión y comparación de archivos, muy útil para entornos de programación dónde hay que comprobar la sincronización entre directorios con código fuente. El Total Commander es muy extensible pero sus opciones por defecto la verdad que son muy cortas y a veces es necesario ampliarlas con comandos que trae el propio programa o con menús externos creados por usuarios. Una de las herramientas que más echo en falta que no esté por defecto es la navegación sincronizada por directorios como hacen la mayoría de clientes FTP como FileZilla, opción que estos si traen sin necesidad de configurar un comando adicional. Para crear un menú con la opción de navegación sincronizada tenemos que posicionarnos en la barra de herramientas y hacer clic derecho para que salga la opción de cambiar: Una vez allí debemos escribir en la nueva ventana en el apartado comando el siguiente comando interno: cm_Syn

Pantalla de bloqueo iOS5

Imagen
Una de las cosas que más me ha llamado la atención del nuevo iOS 5 son las mejoras a la hora de tomar las fotografías, la cámara ahora dispara fotos más cómodamente desde el botón de subir volumen y además ahora tenemos un atajo para activar la cámara desde la pantalla de bloqueo a la que accedemos pulsando 2 veces en el botón de inicio: Al acceder a la pantalla de bloqueo del nuevo iOS 5 veremos el cambio respecto a su predecesor: Otra de las cosas significativas es que si tienes bloqueo por código las fotos que realices y que lógicamente se pueden ver con el iPhone bloqueado son las únicas que podrás ver, o sea que tienes acceso a la galería pero solo a las fotos que hagas en ese momento.

Desaparece la opción de compartir archivos en WS2003

Imagen
Esta es una pequeña guía que te puede ayudar a solucionar el fallo en tu Windows Server 2003 si detectas que te han desaparecido las carpetas que tenías compartidas. Hay mucha información sobre compartir archivos en internet pero a mí particularmente no me valió de mucho y esta guía de pasos es la que me ayudó. Lo primero es comprobar que está configurado tu adaptador de Red para compartir archivos e impresoras, vamos a inicio, panel de control, adaptadores de red y comprobamos cada adaptador: Para cada adaptador abrimos las propiedades y debe de estar marcada la opción de compartir archivos e impresoras : Si está todo correcto comprobemos si está el servicio Server activado , inicio, ejecutar, services.msc y debería aparecernos como la siguiente imagen, si no está activado debemos arrancarlo y ponerlo en modo automático: Por último comprobamos qué carpetas tenemos realmente compartidas : Inicio - Ejecutar -  compmgmt.msc - (enter) - Computer Managment Local - System T

Errores que no existen en SQL Server

Imagen
Esto no sé si es un bug o que no he logrado dar realmente con la información correcta para solucionar mi problema, pero a falta de una solución propongo el problema. Hace poco me estaba dando un error bastante frecuente el SQL Server, error del tipo Communication link failure y número 16389. Al ir al agente de SQL Server e intentar crear una alerta para este error en concreto (16389) (ver imagen siguiente para los pasos que he seguido al crear la alerta nueva) Pues eso que al intentar crear la alerta como os he mostrado anteriormente me sale el siguiente error: No se puede crear una nueva alerta . (SqlManagerUI) Error de Crear para Alerta 'Error'.  (Microsoft.SqlServer.Smo) Excepción al ejecutar una instrucción o un proceso por lotes Transact-SQL. (Microsoft.SqlServer.ConnectionInfo) The specified @message_id ('16389') does not exist. (Microsoft SQL Server, Error: 14262) ¡Que raro! un error reportado por el propio SQL Server y que no exista, bueno, vamos a com

Restablecer valores de la columna identidad en SQL Server

Hace un tiempo hablé en un post sobre los errores que daba SQL Server al intentar truncar una tabla con claves extranjeras (foreign keys) aunque estas estuviesen vacías. Uno de los puntos que traté en ese post era restablecer el valor de la clave principal de la tabla a 0 y el método que utilicé era el mismo que nos explican en este post Reset Identity Column Value in SQL Server . Ayer casualmente probando este método en una tabla recién truncada descubrí que cuando se realiza la opción TRUNCATE TABLE el valor de la columna de identidad (clave principal) toma el valor NULL en vez del valor 0. Lo descubrí al hacer lo siguiente : DBCC CHECKIDENT (tabla, RESEED, 0) La respuesta del SQL Server Managment Studio fue la siguiente: Checking identity information: current identity value 'NULL', current column value '0'. DBCC execution completed. If DBCC printed error messages, contact your system administrator. En realidad esto no afecta en nada es sólo una curiosidad m

Bloquear programas en el Firewall de Windows 7

Aquí os dejo un pequeño tutorial para bloquear programas en el Firewall que vienen por defecto en Windows 7, realmente las opciones avanzadas del firewall de Windows no solo permiten bloquear programas sino que permiten una multitud de configuraciones sobre las cuales no trataremos pero que es cuestión de prueba y error hasta que tengamos nuestro sistema configurado a nuestro gusto. Lo primero que tenemos que hacer es ir a Inicio – Panel de Control - Sistema y Seguridad Pulsamos sobre Firewall de Windows Una vez allí en el lado izquierdo hacemos clic sobre Configuración Avanzada (recuerdo que hay que ser administrador para acceder a estas opciones) Una vez en las opciones avanzadas del Firewall de Windows pulsamos a la izquierda en dónde pone Reglas de Entrada Y una vez allí a la derecha hacemos clic dónde pone Nueva Regla , una vez pulsado este enlace se nos abre la ventana con el asistente para crear nuevas reglas del firewall de Windows; en la primera pantalla elegimos P

Rendimiento SQL Server: grado de paralelismo

El tema de los grados de paralelismo en SQL Server es bastante extenso y tiene una bibliografía bastante amplia sobre todo en inglés (como casi todo en informática), en este post intentaré dar una visión global de qué es y para qué sirven los grados de paralelismo en SQL Server y sobre todo cuando y cómo utilizarlos. En primer lugar y lo más importante es disipar cualquier idea que puedas tener acerca de esta opción ( Max Degree of Parallelism ) y su vinculación a la cantidad de procesadores que SQL Server puede utilizar cuando trata de procesar más de una conexión (o usuario) - no es así. Si SQL Server tiene acceso a cuatro procesadores ociosos y tiene cuatro procesos para ejecutar, utilizará los cuatro procesadores - independientemente del grado máximo de paralelismo. Entonces, ¿qué esta opción no? Max Degree of Parallelism establece el número máximo de procesadores que SQL Server puede utilizar para una consulta. Si SQL Server tiene que devolver una gran cantidad de datos

iOS 5 debería llamarse beta

Imagen
No son pocos los comentarios negativos que andan por la red sobre el nuevo iOS 5 y aunque me cueste tengo que decir que la mayoría de los mismos son ciertos. este lanzamiento más que una versión oficial parece una beta de un sistema futuro mucho más serio. Haciendo un poco de historia muchos de los usuarios de iPhone de lo que más se quejan es del iTunes y de lo poco intuitivo que es para algunas cosas, sin ir más lejos, al instalar el nuevo iOS 5 si eres de los que no sincronizan las aplicaciones y de los incautos, el iTunes te muestra un mensaje antes de nada que dice que tienes compras en tu iPhone que no han sido transferidas al ordenador y contra todo pronóstico en vez de llevarte a que sincronices estas aplicaciones (las cuales perderás si no lo haces) te pone un botón de aceptar. La forma de remediar la sincronización de elementos comprados con iTunes es el enlace que os he dejado ahora desde la misma web de Apple. Pero bien, estos son problemas de antes que no han sido s

Read Committed Snapshot Isolation (RCSI)

Imagen
Con el lanzamiento de SQL Server 2005 se introdujo un nuevo nivel de aislamiento llamado Read Committed Snapshot ( aislamiento de instantáneas ). ¿Qué son los niveles de aislamiento? El nivel de aislamiento de una transacción (transaction isolation level) define el grado en que se aísla una transacción de las modificaciones de recursos o datos realizadas por otras transacciones . El nivel de aislamiento de una transacción es una característica de vital importancia en el desarrollo de aplicaciones de base de datos, ya que afecta a los tipos y duración de bloqueos que se producen en nuestra infraestructura de base de datos, lo cual, tiene efectos directos en el rendimiento y tiempo de respuesta de nuestras consultas y transacciones. Además, el nivel de aislamiento nos permite indicar cómo deseamos que se comporte nuestro motor de base de datos frente a situaciones (…) que pueden impactar consistentemente en la eficacia de nuestros desarrollos en entornos de base de datos con concu

Instalando iOS 5 en 2 horas

Imagen
Ayer a las 19:00 hrs (hora española) los de la manzana sacaron a  la luz la quinta versión de su sistema operativo para móviles iOS 5 . Una actualización que realmente no trae ninguna novedad en cuestiones de rendimiento comparada con el iOS 4 que nos trajo la multitarea, es una actualización que resume más bien peticiones de usabilidad de los propios usuarios. Datos de la instalación del iOS 5 Tamaño de la descarga en España 774,4 MB (la conexión con los servidores de Apple es bastante lenta y suele tardar 1 hora en descargarse) Tiempo de Instalación total en menos de una hora, aunque este valor depende de la cantidad de programas que tengas instalados y la música y vídeos que tengas en tu iPhone (este tiempo es para 84 aplicaciones, 1005 canciones y unas 200 fotos) Es necesario tener actualizado iTunes a la versión 10.5 que también está disponible con una descarga de 73,5 MB. Proceso de Instalación del iOS 5 Desgraciadamente no pude sacar fotos del proceso pero describo los

Optimizar las estadísticas en SQL Server

Las estadísticas en SQL Server se utilizan para que el servidor ante una petición ejecute un plan de ejecución adecuado y optimizado al máximo para la misma. Existen varias opciones en las propiedades de la base de datos para gestionar las estadísticas, veremos cada una de ellas para garantizar la mejor configuración de la base de datos. Para ver y editar la configuración de las estadísticas de una base de datos en SQL Server: Abrir el SQL Server Managment Studio Conectarse a la instancia donde está alojada nuestra base de datos. En el panel izquierdo clic derecho en la base de datos que queremos consultar y del menú desplegable elegir Propiedades. En la ventana de propiedades de la base de datos elegir a la izquierda la página de Opciones Aparecerán las configuraciones de las estadísticas en el apartado automático Crear estadísticas automáticamente (Auto Create Statistics) Se recomienda fuertemente activar Auto Create Statistics pues es una de las formas que utili

Memoria máxima para SQL Server

Uno de los parámetros más importantes del SQL Server es la memoria máxima que establece el límite superior de la cantidad de memoria que utiliza el grupo de búferes del motor de base de datos de SQL Server de Microsoft, o sea lo que viene a indicar es que el grupo de búferes nunca va a dejar que su asignación de memoria adquiera más memoria del nivel especificado en max server memory . Según el propio Microsoft: SQL Server adquiere, como un proceso, más memoria de la especificada en la opción max server memory . Los componentes tanto internos como externos pueden asignar memoria fuera del grupo de búferes, lo cual consume memoria adicional, pero la memoria asignada en el grupo de búferes normalmente representa la cantidad más grande de memoria que SQL Server consume. Calcular el valor de la memoria máxima MAX_SERVER_MEMORY = TOTAL_SERVER_MEMORY - [OS/Apps Memory] - [Threads * Thread Size] TOTAL_SERVER_MEMORY es la memoria RAM total de nuestro servidor, en mi caso 24 GB.

Agregar un valor por defecto en SQL Server

Imagen
Supongamos que queremos modificar una columna existente en una tabla que tenemos creada en nuestra base de datos SQL Server 2008 R2, queremos modificarla para hacerla NO NULL y agregarle un valor por defecto, la solución que me ha funcionado en un poco rara y compleja pues consta de 3 consultas, pero a fin de cuentas me ha funcionado. Como modificar una columna de una tabla y agregarle un valor por defecto (default) USE databaseName GO UPDATE tableName set columnName = defaultValue where columnName IS NULL; GO ALTER TABLE tableName ALTER COLUMN columnName dataType NOT NULL; GO ALTER TABLE tableName ADD CONSTRAINT constraintName DEFAULT defaultValue FOR columnName; GO Lo que hago para modificar una columna de una tabla y agregarle un valor por defecto son tres sencillos pasos: rellenar el campo de la tabla para los valores que son nulos con el valor por defecto modificar esta columna y decirle que va a ser no nula agregar la constante que se encarga de supervisar y de agreg

Errores al mover datos antiguos en SQL Server

Hace un tiempo estuve escribiendo una solución para aligerar el tamaño de tablas importantes moviendo datos antiguos a tablas auxiliares . Esta es una solución muy práctica sobre todo tendiendo en cuenta que la ejecutas con una sola sentencia SQL lo único malo es que cada tabla debe ser igual en el número de campos, o sea, si borras uno lo tienes que borrar en ambas tablas (lo mismo pasa al agregar un campo), de no hacerlo tenemos el siguiente error: SQLSTATE: 21S01 code: 213 message: Microsoft SQL Native Client SQL Server Column name or number of supplied values does not match table definition Algunas consultas que nos pueden ser útiles: Agregar campos a una tabla desde la consola utilizando sintaxis SQL: ALTER TABLE tabla_nombre ADD campo_nombre tipo_campo null_or_not_null; Borrar campos: ALTER TABLE tabla_nombre DROP COLUMN campo_nombre; Borrar un índice (es muy importante borrar los índices antes de borrar los campos asociados en la tabla) DROP INDEX indice_nombre ON tabla

Tipos de campos en SQL Server con PHP

Con el driver de microsoft para PHP podemos obtener la información de los tipos de campos devueltos de una consulta con la función sqlsrv_field_metadata , por ejemplo: $cols = sqlsrv_query($conexion, $query); $valores = sqlsrv_field_metadata($cols); $tipo_campo = $valores[0]['Type']; La correspondencia entre los valores numéricos devueltos por sqlsrv_field_metadata y el literal del tipo de campo es la siguiente: -5 bigint -2 binary -7 bit 1 char 93 datetime 3 decimal 6 float -4 image 4 int 3 money -8 nchar -10 ntext 2 numeric -9 nvarchar -9 nvarcharMAX 7 real 93 smalldatetime 5 smaillint 3 smallmoney -150 sql_variant -1 text -2 timestamp -6 tinyint -11 uniqueidentifiar -3 varbinary -3 varbinaryMAX 12 varchar 12 varcharMAX -152 xml

Tickets que caducan en jQuery

Al parecer el equipo de trabajo de jquery esta saturado de trabajo porque hoy me ha llegado una actualización del ticket que les mandé hace 15 días con el problema de los nombres con corchetes en el core de jquery , la respuesta ha sido que al no tener un caso de ejemplo por mi parte pues que cerraban el ticket porque reciben muchos, he aquí la respuesta textual: Because we get so many tickets, we often need to return them to the initial reporter for more information. If that person does not reply within 14 days, the ticket will automatically be closed, and that has happened in this case. If you still are interested in pursuing this issue, feel free to add a comment with the requested information and we will be happy to reopen the ticket if it is still valid. Thanks! En español Debido a que recibimos muchas entradas de errores, a menudo necesitamos volver al que lo reportó inicialmente para más información. Si esa persona no responde dentro de 14 días, el ticket se cerrará automá

SQL Server Managment Studio Denali

Desde hace unos días estoy probando el SQL Server Managment Studio “Denali” CTP3 (correspondiente al SQL Server code name Denali o SQL Server 2011), teniendo en cuenta que es una CTP (comunity technical preview) pues es normal que sea una versión inestable y de fallos, nada recomendable para entornos de producción porque en realidad no deja de ser una versión alpha de este software. En realidad en este post voy a hablar poco del SQL Server Management Studio Denali , porque ya hay bastantes sitios en inglés que hablan de él, así que me limitaré a decir lo que más me ha sorprendido y a poner enlaces a sitios externos. Lo que más me llama la atención de esta nueva versión del Managment Studio es su interfaz ahora mucho más parecida al Visual Studio, en las siguientes imágenes veremos las comparativas con el Managment Studio de SQL Server 2008 R2 : También destaca que la barra de información y detalle ya no esté en la parte inferior sino a la derecha del panel, lo cual, en mi opin