Determinar la versión exacta del SQL Server
SQL January 15th, 2010
Para determinar cuál es la versión exacta de un servidor SQL Server (ya sea 2000, 2005 ó 2008), basta con ejecutar la siguiente consulta:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY('productlevel'), SERVERPROPERTY('edition')
En mi caso, la consulta me devuelve algo como esto:
| 9.00.3080.00 | SP2 | Developer Edition |
Para versiones anteriores de SQL Server, podemos utilizar esta otra consulta:
SELECT @@VERSIONVía: Microsoft Support
Tags: SQL Server, SQL Server 2000, SQL Server 2005, SQL Server 2008
Quitar una cadena de texto de muchos registros usando SQL
SQL December 29th, 2009
En una aplicación en la que estoy trabajando, surgió la necesidad de actualizar muchos registros de la base de datos, específicamente, lo que necesitaba era quitar un texto común dentro de un mismo campo para muchos registros.
Para ser más explícito, tenía algo como esto dentro de una tabla en la base de datos:
| id | filepath |
| 1 | files/archivo1 |
| 2 | files/archivo2 |
| 3 | files/archivo3 |
| 4 | archivo4 |
Y necesitaba quitar el texto files/ de los registros que lo tuvieran. La magia nos la dará entonces la función REPLACE dentro de una sentencia UPDATE de SQL:
UPDATE {tabla} SET {campo} = REPLACE({campo}, '{texto original}', '{texto de reemplazo}') WHERE {campo} LIKE '{texto original}%'
En mi caso, la sentencia sería como sigue:
UPDATE files SET filepath = REPLACE(filepath, 'files/', '') WHERE filepath LIKE 'files/%'
Esto hace que primero se filtren los registros cuyo campo filepath comienza por la cadena files/ (nótese el signo de porcentaje solo al final), y luego se reemplace dicho campo por el resultado de la función REPLACE. Esta función toma el valor del campo, busca ahí la cadena files/ y la reemplaza por una cadena vacía (consiguiendo el efecto deseado).
La sentencia WHERE no es completamente necesaria, solo me aseguro que afecte a los registros donde el campo filepath comienza con ese texto y no a los que tengan el texto en otra posición.
Tags: REPLACE, SQL Server, UPDATE
SQL Server’s nvarchar(max) on Castle ActiveRecord
.Net, SQL, Software May 6th, 2009
I’m using the new SQL Server 2005’s data type nvarchar(max) on a .Net project (ntext has been deprecated in this version) in conjuction with Castle ActiveRecord. For a complete integration (including schema creation), ActiveRecord property should looks like this:
[Property("description", ColumnType = "StringClob", SqlType = "nvarchar(MAX)")]
ColumnType = “StringClob” avoids text to be truncated if it gets too long. SqlType = “nvarchar(MAX)” forces the field to be created as that data type, otherwise, it will be created as nvarchar(255).
A more detailed explanation can be found here and here.
Tags: ActiveRecord, Castle, Hibernate, NHibernate, nvarchar, nvarchar(max), SQL Server
Borrar los transaction logs de SQL Server
SQL March 2nd, 2009
El registro de transacciones (transaction log) almacena todas las consultas que se ejecutan en una base de datos, por lo que incluso suele ser más grande que esta. Si por algún motivo queremos limpiar este registro en SQL Server 2005 (lo cual solo debería ocurrir en muy contadas situaciones, como al trabajar con una base de datos de desarrollo), se debe seguir el siguiente procedimiento (previo backup):
BACKUP LOG your_database_name
WITH TRUNCATE_ONLYLuego de ejecutar este comando, el registro se habrá truncado pero el tamaño del archivo se mantendrá igual; por lo que para reducirlo, se deberá ir al SQL Server Management Studio, escoger la base de datos, clic derecho, Tasks > Shrink > Files. En la siguiente pantalla, escoger Log en File type, darle OK y listo.
Tags: SQL, SQL Server, Transaction log
About















