Matar procesos de SQL Server para liberar una base de datos
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 INT, ecid INT, status VARCHAR(150), loginame VARCHAR(150), hostname VARCHAR(150), blk INT, dbname 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 @getspidDROP 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í.
Symfony con MSSQL en Ubuntu Feisty
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à.

