Para conocer la versión de SQL Server que usa un servidor, usaremos la sentencia SELECT @@Version, en negrita he resaltado los resultados que nos puede devolver la consulta. A continuación os detallo las distintas versiones de SQL Server que existen: (he omitido las actualizaciones acumulativas excepto las de SQL Server 2008)
SQL SERVER 2008
---------------
SQL Server code name "Katmai" (CTP) - 10.0.1075.23 (no podía resistirme)
SQL Server 2008 RTM 10.00.1600
SQL Server 2008 RTM CU1 10.00.1763
SQL Server 2008 RTM CU2 10.00.1779
SQL Server 2008 RTM CU3 10.00.1787
SQL Server 2008 RTM CU4 10.00.1798
SQL Server 2008 RTM CU5 10.00.1806
SQL Server 2008 SP1 10.00.2531
SQL Server 2008 SP1 CU1 10.00.2710
SQL Server 2008 SP1 CU2 10.00.2714
SQL SERVER 2005
---------------
SQL Server 2005 RTM 9.00.1399
SQL Server 2005 Service Pack 1 9.00.2047
SQL Server 2005 Service Pack 2 9.00.3042
SQL Server 2005 Service Pack 3 9.00.4035
SQL SERVER 2000
---------------
RTM 2000.80.194.0
SQL Server 2000 SP1 2000.80.384.0
SQL Server 2000 SP2 2000.80.534.0
SQL Server 2000 SP3 2000.80.760.0
SQL Server 2000 SP3a 2000.80.760.0
SQL Server 2000 SP4 2000.8.00.2039
SQL SERVER 7.0
--------------
7.00.1063 SQL Server 7.0 Service Pack 4 (SP4)
7.00.961 SQL Server 7.0 Service Pack 3 (SP3)
7.00.842 SQL Server 7.0 Service Pack 2 (SP2)
7.00.699 SQL Server 7.0 Service Pack 1 (SP1)
7.00.623 SQL Server 7.0 RTM (Release To Manufacturing)
SQL SERVER 6.5
--------------
6.50.479 SQL Server 6.5 Service Pack 5a (SP5a) Update
6.50.416 SQL Server 6.5 Service Pack 5a (SP5a)
6.50.415 SQL Server 6.5 Service Pack 5 (SP5)
6.50.281 SQL Server 6.5 Service Pack 4 (SP4)
6.50.258 SQL Server 6.5 Service Pack 3 (SP3)
6.50.240 SQL Server 6.5 Service Pack 2 (SP2)
6.50.213 SQL Server 6.5 Service Pack 1 (SP1)
6.50.201 SQL Server 6.5 RTM
sábado, 15 de septiembre de 2007
viernes, 14 de septiembre de 2007
Shift + Botón derecho para Windows Vista
Navegando por el ciberspacio he encontrado una combinación de teclas y ratón que nos puede ayudar en el día a día de nuestro trabajo.
Si sobre un fichero pulsamos SHIFT + Botón derecho del ratón veremos como se despliegan nuevas opciones, una de ellas que nos puede resultar bastante útil es la de Copiar como ruta de acceso, lo que hace es, copia la ruta dónde se halla este fichero al portapapeles, ya os podéis imaginar para que lo podemos usar, se acabó el ir abriendo la ruta y seleccionándola para luego copiar y pegar.
Espero que os sea de utilidad.
Si sobre un fichero pulsamos SHIFT + Botón derecho del ratón veremos como se despliegan nuevas opciones, una de ellas que nos puede resultar bastante útil es la de Copiar como ruta de acceso, lo que hace es, copia la ruta dónde se halla este fichero al portapapeles, ya os podéis imaginar para que lo podemos usar, se acabó el ir abriendo la ruta y seleccionándola para luego copiar y pegar.
Espero que os sea de utilidad.
viernes, 24 de agosto de 2007
Existe un campo en una tabla
Bueno visitando las news de microsoft.public.es.sqlserver he visto que alguien preguntaba cómo saber si en una tabla existe un determinado campo, para en caso de no existir, añadirlo. Así que me he decidido a responderle y de paso postearlo aquí por si le sirve a alguien más.
IF NOT Exists(SELECT * FROM syscolumns AS sc INNER JOIN sysobjects AS so ON
sc.id=so.id AND
sc.name='NombreCampoNuevo' AND
so.name='NombreTabla')
Aquí pondríais la instrucción ALTER TABLE
GO
IF NOT Exists(SELECT * FROM syscolumns AS sc INNER JOIN sysobjects AS so ON
sc.id=so.id AND
sc.name='NombreCampoNuevo' AND
so.name='NombreTabla')
Aquí pondríais la instrucción ALTER TABLE
GO
domingo, 19 de agosto de 2007
Integración CLR
Para poder usar esta nueva característica de SQL Server 2005 primero debemos habilitarla, para ello tenemos 2 opciones:
1.- Desde la Configuración del área de superficie para características. Desplegamos el nodo Motor de Base de datos, seleccionamos la opción Integración CLR marcando o desmarcando la casilla para habilitar o deshabilitar la característica.
2.- O bien mediante una sentencia T-SQL. Para poder ejecutar con éxito esta sentencia debemos tener permisos de sysadmin y serveradmin. La consulta es esta:
sp_configure ‘clr enabled’, 1
GO
RECONFIGURE
GO
Para deshabilitar la opción sustituiremos el 1 por un 0 (‘clr enabled’, 0)
Una vez ya tenemos activada esta opción pasamos a ver las posibilidades que nos brinda.
1.- Crearemos un nuevo proyecto de tipo Base de datos

2.- Una vez creado añadiremos un elemento nuevo, en este caso vamos a añadir una función definida por el usuario y la llamaremos clrDiaSemana

3.- Agregamos funcionalidad a nuestra función:

La función es muy sencilla y en SQL Server ya existe una función para devolver el día de la semana según una fecha dada (DATEPART, ver los BOL para su uso).
Una vez hecho esto tenemos que compilar el proyecto y una vez compilado lo implementamos (deploy), en SQL Server 2005 que es el servidor que acogerá el código .Net (en forma de ensamblado, en este caso de dll) y lo ejecutará en su interior.
Para comprobar que tenemos el ensamblado .Net que acabamos de implementar en SQL Server 2005, abriremos Sql Management Studio y desplegaremos la subcarpeta Ensamblados de la carpeta Programación de la base de datos que especificamos como conexión.

En la imagen podéis ver la manera de invocar a la función pasándole un parámetro, siempre que queramos hacer uso de la función debemos especificar a que esquema pertenece la función.
1.- Desde la Configuración del área de superficie para características. Desplegamos el nodo Motor de Base de datos, seleccionamos la opción Integración CLR marcando o desmarcando la casilla para habilitar o deshabilitar la característica.
2.- O bien mediante una sentencia T-SQL. Para poder ejecutar con éxito esta sentencia debemos tener permisos de sysadmin y serveradmin. La consulta es esta:
sp_configure ‘clr enabled’, 1
GO
RECONFIGURE
GO
Para deshabilitar la opción sustituiremos el 1 por un 0 (‘clr enabled’, 0)
Una vez ya tenemos activada esta opción pasamos a ver las posibilidades que nos brinda.
1.- Crearemos un nuevo proyecto de tipo Base de datos

2.- Una vez creado añadiremos un elemento nuevo, en este caso vamos a añadir una función definida por el usuario y la llamaremos clrDiaSemana

3.- Agregamos funcionalidad a nuestra función:

La función es muy sencilla y en SQL Server ya existe una función para devolver el día de la semana según una fecha dada (DATEPART, ver los BOL para su uso).
Una vez hecho esto tenemos que compilar el proyecto y una vez compilado lo implementamos (deploy), en SQL Server 2005 que es el servidor que acogerá el código .Net (en forma de ensamblado, en este caso de dll) y lo ejecutará en su interior.
Para comprobar que tenemos el ensamblado .Net que acabamos de implementar en SQL Server 2005, abriremos Sql Management Studio y desplegaremos la subcarpeta Ensamblados de la carpeta Programación de la base de datos que especificamos como conexión.

En la imagen podéis ver la manera de invocar a la función pasándole un parámetro, siempre que queramos hacer uso de la función debemos especificar a que esquema pertenece la función.
Enviar mails desde nuestra aplicación
Esta es una manera sencilla de implementar el envío de correo electrónico desde nuestra aplicación (la aplicación de ejemplo consta sólo de un formulario con un botón).
También podríamos crear un sistema de mailing masivo, implementando un bucle que recorra los destinatarios, de esta manera podríamos enviar noticias a nuestros clientes acerca de nuevos productos en nuestra empresa, sin tener que depender de productos de terceras personas.
Imports System.Net
Imports System.Net.Mail
Public Class Inicio
Private Sub Enviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enviar.Click
Try
Dim mensaje As New MailMessage()
Dim cliente As SmtpClient = New SmtpClient("smtp.loquesea.com")
Dim cuerpo As String = "Esto es una prueba de mailing usando Visual Studio 2008, desde un formulario sencillo"
'TODO: Podemos implementar un bucle que procese los registros con emails (podemos obtenerlos de una BD por ejemplo)
With mensaje
.From = New System.Net.Mail.MailAddress("francisco@nospam.com")
'Iremos añadiendo los distintos destinatarios de los mensajes
.To.Add("irma@nospam.com")
.Subject = "Pruebas"
.Body = cuerpo
End With
cliente.Credentials = New System.Net.NetworkCredential("francisco@nospam.com", "1234")
'Añadimos las credenciales
cliente.Credentials = CredentialCache.DefaultNetworkCredentials
cliente.Send(mensaje)
MsgBox("Mensaje enviado con éxito")
'TODO: En esta parte podríamos controlar los distintos tipos de excepciones que se pueden presentar, fallo al enviar,
'correo lleno, ... para ello usaríamos en lugar de exception SmtpFailedRecipientsException y con una variable de tipo
'SmtpStatusCode podríamos recuperar el estado y asignar un mensaje más entendible para el usuario.
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
También podríamos crear un sistema de mailing masivo, implementando un bucle que recorra los destinatarios, de esta manera podríamos enviar noticias a nuestros clientes acerca de nuevos productos en nuestra empresa, sin tener que depender de productos de terceras personas.
Imports System.Net
Imports System.Net.Mail
Public Class Inicio
Private Sub Enviar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Enviar.Click
Try
Dim mensaje As New MailMessage()
Dim cliente As SmtpClient = New SmtpClient("smtp.loquesea.com")
Dim cuerpo As String = "Esto es una prueba de mailing usando Visual Studio 2008, desde un formulario sencillo"
'TODO: Podemos implementar un bucle que procese los registros con emails (podemos obtenerlos de una BD por ejemplo)
With mensaje
.From = New System.Net.Mail.MailAddress("francisco@nospam.com")
'Iremos añadiendo los distintos destinatarios de los mensajes
.To.Add("irma@nospam.com")
.Subject = "Pruebas"
.Body = cuerpo
End With
cliente.Credentials = New System.Net.NetworkCredential("francisco@nospam.com", "1234")
'Añadimos las credenciales
cliente.Credentials = CredentialCache.DefaultNetworkCredentials
cliente.Send(mensaje)
MsgBox("Mensaje enviado con éxito")
'TODO: En esta parte podríamos controlar los distintos tipos de excepciones que se pueden presentar, fallo al enviar,
'correo lleno, ... para ello usaríamos en lugar de exception SmtpFailedRecipientsException y con una variable de tipo
'SmtpStatusCode podríamos recuperar el estado y asignar un mensaje más entendible para el usuario.
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class
martes, 19 de junio de 2007
Checkbox con 3 estados
El código que os pongo es la manera más sencilla de implementar un checkbox con 3 posibles estados en WPF:
CheckBox Name="checkbox1" IsThreeState="True" IsChecked="{x:Null}"
CheckBox en estado indeterminado
CheckBox
No se porqué no puedo añadir las marcas de apertura y cierre, el caso es que si las pongo el blog quita todo el código contenido dentro de las marcas.
Ahora sólo falta adornarlo con una plantilla y a usarlo en nuestras aplicaciones, pero eso ya será otro día porque ya es tarde y mañana hay que currar.
En respuesta a tu petición voy a poner unas capturas que espero te sirvan de ayuda
CheckBox Name="checkbox1" IsThreeState="True" IsChecked="{x:Null}"
CheckBox en estado indeterminado
CheckBox
No se porqué no puedo añadir las marcas de apertura y cierre, el caso es que si las pongo el blog quita todo el código contenido dentro de las marcas.
Ahora sólo falta adornarlo con una plantilla y a usarlo en nuestras aplicaciones, pero eso ya será otro día porque ya es tarde y mañana hay que currar.
En respuesta a tu petición voy a poner unas capturas que espero te sirvan de ayuda
viernes, 12 de enero de 2007
Año Nuevo info Nueva
Feliz Año a todos con retraso, es lo que tiene el no tener vacaciones, que te lías con el curro y se te quitan las ganas de escribir. A continuación os voy a dar unas direcciones interesantes con herramientas que pueden sernos útiles en algún momento:
UTILIDADES
- http://www.giveawayoftheday.com/ (sitio con software gratuito que cambia cada 24h)
- http://www.phoenixbit.com/products.asp?productid=imageminimizer (programa para cambiar el formato, calidad y tamaño de las imágenes. Puede hacer conversiones en masa)
- http://www.testmyhardware.com (freeware para chequear nuestro ordenata)
- http://www.desktopsidebar.com (simula la barra lateral de Windows Vista en nuestro XP)
UTILIDADES
- http://www.giveawayoftheday.com/ (sitio con software gratuito que cambia cada 24h)
- http://www.phoenixbit.com/products.asp?productid=imageminimizer (programa para cambiar el formato, calidad y tamaño de las imágenes. Puede hacer conversiones en masa)
- http://www.testmyhardware.com (freeware para chequear nuestro ordenata)
- http://www.desktopsidebar.com (simula la barra lateral de Windows Vista en nuestro XP)
Suscribirse a:
Entradas (Atom)



