Problema columna computada persisted

miércoles, 19 de mayo de 2010
Publicado por Ivan 0 comentarios

En "el extraño caso" de hoy, està el de la columna computada persisted en SQL Server 2005. Cuenta la leyenda que luego de crear una columna computada persisted en SQL Server 2005, un informático se tuvo que enfrentar a problemas relativos a que no se pudieron realizar operaciones de update o insert sobre la tabla que tenìa asociada la columna computada, supuestamente porque los ANSI estaban mal definidos (ANSI_NULL, QUOTED_IDENTIFIER, ARITHABORT, entre otros).


Esto se debe a que las columnas computadas declaradas persisted permiten la indexación, al contrario de las no persisted, y como para indexar columnas computadas o vistas es necesario que los ANSI estèn ON, y estaban por defecto en la base de datos en OFF, entonces eso era lo que estaba provocando el problema.

Solución?. En realidad hay varias dependiendo de las condiciones. En mi caso particular decidí no hacerla persisted, por lo que entonces los ANSI ya no son exigidos, y todo funcionaría de maravillas. Y así fué, no hubieron mas errores en updates o inserts sobre la tabla.

Aprovecho de acotar que en realidad las columnas computadas son soportadas desde SQL Server 2000, pero en ese entonces no se soportaba la propiedad persisted, que fuè habilitada en SQL Server 2005 junto con la indexacion de vistas. A lo mejor por ahi va la cosa.

Renombrar columnas o tablas en SQL Server

lunes, 3 de mayo de 2010
Publicado por Ivan 0 comentarios

Ese era el problema!, como cambio el nombre de una columna o tabla en SQL Server??. Tenía una columna computada relacionada a otras dos columna, y todas debían desaparecer en beneficio de una columna que se llamaría igual que la columna computada. Para eso, cree una columna con un nombre distinto, actualice su valor en base al de la columna computada, y luego eliminé esas 3 columnas que no necesitaba. Y ahora, venía la parte en que debía renombrar la columna.

Para esto, existe un procedimiento almacenado llamado sp_rename, cuyo uso para renombrar una columna es:

sp_rename 'nombre_Tabla.nombre_columna', 'nuevo_nombre_columna', 'COLUMN'

El 'COLUMN' es invariable, siempre va. Y para cambiar el nombre a una tabla, más sencillo aún:
sp_rename 'nombre_antiguo_tabla', 'nombre_nuevo_tabla'.

Y esto gracias a otro personaje que me dió el dato, y que está aquí

Procedimiento almacenado de SQL Server demora mucho.

Publicado por Ivan 2 comentarios

Nuevamente el titulo es bastante genérico, por lo que paso a detallar el problema.

El problema era el siguiente: Uso powerbuilder para desarrollar, y en esta herramienta hay un objeto que es la piedrangular de powerbuilder, que es la datawindow. Es una datagrid pero con esteroides, buenos métodos y estados. En ella se especifica una consulta sql, y con eso retorna los valores en si misma, que pueden ser modificados, ingresados nuevos valores o eliminados, y luego se llama al método update de la misma, y solita construye los insert, delete o updates necesarios para que todo quede como lo dejamos en la datawindow.

En fin!, generalmente cuando debo hacer informes en ella genero la consulta en el administrador de sql server para asegurarme que me traiga los resultados que necesito, y luego la copio en la datawindow. Esta consulta tenìa un parámetro, por lo que en el administrador usaba una variable para simular el funcionamiento que tendría en la datawindow, y bien!!!, demoraba 6 segundos en traer lo que que necesitaba. Copié en la datawindow, lo probé, y..... rayos!!!, demoraba 11 minutos!!!!.

Pensé que a lo mejor la datawindow podría estar mal, la hice de nuevo, le copie la consulta, y lo mismo. No me explicaba como la misma consulta demoraba tanto ejecutada desde la datawindow, y tan poco desde el administrador de SQL Server. Luego, pensé que llamando los resultados desde un procedimiento almacenado podría apurar un poco las cosas, y mi sorpresa fué mayor cuando luego de crear el procedimiento lo ejecuté en el mimo administrador de sql y rayos!!!, 11 minutos tambien!!!!.

Luego de pegarme un par de cabezasos decidí preguntar a mis colegas para ver si a alguno le habia pasado lo mismo, y llegué al jefe. Ahí me comentó que tampoco sabía porqué, pero que eso se arreglaba tomando el parametro pasado al procedimiento, asignandolo a una variable dentro del procedimiento, y luego usando dicha variable en vez del argumento del procedimiento.

Extrañó!, debería ser lo mismo, pero probé y chan!!!!, pasamos de 11 minutos a 6 segundos. El jefe suponía que seguramente los argumentos de los procedimientos almacenados son almacenados en un área no optimizada o muy concurrida, tal que a lo mejor por eso hay demoras excesivas para acceder al valor de dicho argumento cuando el procedimiento almacenado lo necesita.

En resumen, la solución pasa por tomar las variables del argumento del procedimiento, y ponerlas en variables locales al procedimiento, y luego ejecutar el procedimiento almacenado. Con esto, asunto arreglado!!!!!


Pc se reinicia solo

lunes, 15 de febrero de 2010
Publicado por Ivan 0 comentarios

Bueno, la verdad es que este problema puede estar dado por hardware o software. Este caso apunta a un problema de software. Y la mejor forma de identificar cuando el origen está en el software es ver el arranque del sistema operativo, e irse fijando en las distintas fases del inicio: desde que aparece la pantalla de la bios, el logo de windows con la carga del mismo, la pantalla de bienvenida, y generalmente por ahì o antes es que falla. Si siempre se reinicia en el mismo punto, o definitivamente el sistema no parte, lo mejor es tratar de recurrir a un buenisima herramienta de Windows incorporada en XP llamada Restauraciòn del sistema.

Ahora... como acceder a un funcionalidad de windows si no podemos entrar a windows?. Pues en estos casos debemos recurrir a una herramienta externa, en particular un LiveCd que trae muchas funcionalidades interesantes, llamado ERD Commander. Sabía que en un principio la compañia que le daba soporte era Wynternals, pero fué comprada por microsoft, por lo que la mayoría de las fuentes está en blogs y pagina similares. A la pagina que le tengo fe es taringa, así que pueden descargar Erd Commander 2008 aquí.

Y echenle un vistazo. Una herramienta interesante es Locksmith, que permite cambiar las contraseñas de cualquier cuenta de usuario de windows. Todo puede ser usado para el mal, pero por otro lado me ha pasado muchas veces que los mismos usuarios me preguntan cuàles son sus propias contraseñas. Eso!!!


Crear ringtone para iphone

domingo, 14 de febrero de 2010
Publicado por Ivan 1 comentarios

La verdad es que el mérito no es mío. Estaba buscando la forma de crear un ringtone para el iphone y busqué qué opciones habian y todas se referían a un método mediante el cuál hay que usar iTunes para convertir el fragmento de un archivo de música a .acc y luego renombrar este archivo a m4r, que es el formato de los tonos del iphone y que reconoce itunes, siempre y cuando dicho fragmento no sea mayor a 40 segundos.


Sin embargo la última versión de iTunes remueve esa opción, agregando además la opción de "crear tono" pero que es válida solamente para las canciones compradas en la iTunes Store.

Otras opciones son programas que permiten generar los ringtones directamente, pero no me gustan esos programas ya que, si te gusta piratear por ser programas poco conocidos es muy dificil pillarlos, y si lo quieres comprar no vale la pena gastar plata por un programa tan sencillo. En ese caso sirve más un método para crear ringtones mediante GarageBand que encontré aquí. Y en ese caso si lo quieres piratear es mucho más facil pillarlo por ser más conocido, y si es por comprarlo entonces el mismo programa te servirá para mucho más que para solo hacer ringtones.

Ahh!, olvidé mencionar que por ser GarageBand, esta opción esta disponible solo para OS X. Para la conversión de archivos en Windows recomiendo mucho FormatFactory, que también permite crear ringtones para el iphone. Este software es gratis y se puede descargar desde aquí