Aloquevamos.com Blog, ocasionalmente…

17Oct/080

Matar procesos de SQL Server para liberar una base de datos

Posted by Chiru

Pués necesitaba restaurar una copia de una base de datos de producción a un entorno de test y me daba errores de que no podía hacerlo por que la base de datos estaba en uso.

En la consola del administrador corporativo veo esos procesos, pero por más que le diga que los elimine, no hay manera, así que buscando un poco en google, he encontrado esto, que genera un cursor para matar todos los procesos de una base de datos en concreto.

CREATE TABLE #TmpWho
(spid INTecid INTstatus VARCHAR(150), loginame VARCHAR(150),
hostname VARCHAR(150), blk INTdbname VARCHAR(150), cmd VARCHAR(150))

INSERT INTO     #TmpWho
EXEC       sp_who
DECLARE    @spid INT
DECLARE    @tString VARCHAR(15)
DECLARE    @getspid CURSOR

SET @getspid =   CURSOR FOR
SELECT         spid
FROM       #TmpWho
WHERE          dbname 'mydb'OPEN @getspid

FETCH NEXT FROM @getspid INTO @spid
WHILE @@FETCH_STATUS 0

BEGIN
SET @tString 'KILL ' CAST(@spid AS VARCHAR(5))
EXEC(@tString)
FETCH NEXT FROM @getspid INTO @spid
END

CLOSE @getspid
DEALLOCATE @getspid

DROP TABLE #TmpWho




Oli en un llum (aceite en una lámpara), vamos que funciona a las mil maravillas (al menos en un SQL Server 2000 con SP3).

La fuente (en inlgés) aquí.

26Jul/072

Symfony con MSSQL en Ubuntu Feisty

Posted by Chiru

Pues que tengo que hacer una pequeña web para consultar convenios laborales en el trabajo, y como allí usamos un SQL Server 2000, he decido conectar symfony al SQL Server para trabajar directamente ahí.

El primer y gran problema es que el php en ubuntu no viene con el soporte para mssql, con lo que muchos pensareis: "sudo apt-get install php5-mssql"... PUES NO! O al menos yo no he visto ese paquete por ningún sitio. Con lo cual he seguido este tutorial para compilar php en ubuntu con el soporte para mssql.

Básicamente:

  • sudo apt-get install freetds-dev dpkg-dev
  • sudo apt-get source php5

Editamos el fichero <directorio_con_las_fuentes>/debian/rules y añadimos "--with-mssql" a la variable COOMON_CONFIG.

  • sudo aptitude build-dep php5
  • sudo dpkg-buildpackage

Luego instalamos TODOS los .deb que nos ha generado (en mi caso en el directorio home en vez de en el directorio de las fuentes)

  • sudo dpkg -i php5_*.deb

Y por último copiar el modulo de apache a su sitio y reiniciar (el apache eh!):

  • sudo cp ~/php5-*/apache2-build/libs/libphp5.so /usr/lib/apache2/modules/libphp5.so
  • sudo /etc/init.d/apache2 restart

Et voila! Yo después de esto conseguí que symfony me creara el esquema y el modelo sin más problemas. Ahora lo que me pasa es que symfony me añade un campo ID "by the little leg" que no existe en la base de datos y da error al hacer cualquier query. Ya os contaré.

Update: Al final ya he encontrado el que con los campos ID fantasma. Se ve que symfony (o propel) necesitan una primary key para poder montar el modelo, y la base de datos estaba tan mal hecha que no tenía ni una clave. Se las he añadido, reconstruido el modelo y voilà.