Instalando SQL Server 2008 RTM + SP1

Hoy es tiempo de instalar SQL Server + SP1.

Después de no escribir por un tiempo jojo si que fue mucho, y por una petición antigua de un amigo escribo este post que espero que les sea de utilidad.

(Este post esta basado en la traducción de un post de Peter Saddow si quieres ver el post original haz click aqui)

Muchos se preguntarán porque hacer esto, seguro deben vender SQL Server 2008 con el SP1(Service Pack 1) eso yo pensaba; pero desafortunadamente no es asi. Asi que si quieres tener todo integrado debe realizar una instalación Slipstreamed.

OK y qué cosa es eso?? Con qué se come o en qué consiste??? Consiste en generar un source media para la instalación uniendo en este caso la RTM de SQL Server 2008 con el SP1 del mismo.

Y cómo se hace eso?? Primero como buena receta de cocina aqui van los ingredientes.

  • 1 Microsoft SQL Server 2008 RTM (En mi caso tengo la versión en inglés).
  • Service Pack 1 de Microsoft SQL Server 2008 para las tres arquitecturas (x86, x64 e IA64).

El SQL Server 2008 copialo al directorio C:\SQLServer2008_FullSP1.

Los service pack los puedes bajar de http://www.microsoft.com/downloads/details.aspx?FamilyID=66ab3dbb-bf3e-4f46-9559-ccc6a4f9dc19 y como resultado tendrás 3 paquetes mas o menos con los siguientes nombres:

  • SQLServer2008SP1-KB968369-IA64-ENU.exe
  • SQLServer2008SP1-KB968369-x64-ENU.exe
  • SQLServer2008SP1-KB968369-x86-ENU.exe

Luego extraes los paquete como se muestra a continuación:

  • SQLServer2008SP1-KB968369-IA64-ENU.exe /x:C:\SQLServer2008_FullSP1\PCU
  • SQLServer2008SP1-KB968369-x64-ENU.exe /x:C:\SQLServer2008_FullSP1\PCU
  • SQLServer2008SP1-KB968369-x86-ENU.exe /x:C:\SQLServer2008_FullSP1\PCU

Hazlo con los tres paquetes y asi te puedes asegurar que el source media te puede servir para las tres arquitecturas.

Ahora copia los archivos Setup.exe y Setup.rll del directorio PCU a el directorio donde esta el SQL Server original.

  • robocopy C:\SQLServer2008_FullSP1\PCU C:\SQLServer2008_FullSP1 Setup.exe
  • robocopy C:\SQLServer2008_FullSP1\PCU C:\SQLServer2008_FullSP1 Setup.rll

Copia todos los archivos y no las carpetas excepto el archivo Microsoft.SQL.Chainer.PackageData.dll, en C:\SQLServer2008_FullSP1\PCU\<arquitectura> a C:\SQLServer2008_FullSP1\<arquitectura> para actualizar los archivos originales.

  • robocopy C:\SQLServer2008_FullSP1\PCU\x86 C:\SQLServer2008_FullSP1\x86 /XF Microsoft.SQL.Chainer.PackageData.dll
  • robocopy C:\SQLServer2008_FullSP1\PCU\x64 C:\SQLServer2008_FullSP1\x64 /XF Microsoft.SQL.Chainer.PackageData.dll
  • robocopy C:\SQLServer2008_FullSP1\PCU\ia64 C:\SQLServer2008_FullSP1\ia64 /XF Microsoft.SQL.Chainer.PackageData.dll

Busca el archivo defaultsetup.ini en las siguientes rutas y si no se encuentra crealo.

  • C:\SQLServer2008_FullSP1\x86
  • C:\SQLServer2008_FullSP1\x64
  • C:\SQLServer2008_FullSP1\ia64

Si encuentras el archivo modifica la línea PCUSource como se muestra abajo.

PCUSOURCE="{Full path}\PCU"

Donde Full path lo reemplazarás por la ruta original de donde copiaste el SQL Server, en caso que lo quieras compartir por red, debes poner el nombre del servidor con la localización del recurso de red o por ejemplo \\MiServer\SQLServer2008_FullSP1

En caso que no tengas el archivo y lo hayas creado debes poner el siguiente contenido:

;SQLSERVER2008 Configuration File
[SQLSERVER2008]
PCUSOURCE="{full path}\PCU"

Finalmente ejecuta el archivo Setup y listo. He alli una instalación de Server 2008 con SP1.

Espero les haya servido y cualquier duda me la pueden hacer llegar. Saludos y Happy Installing!!!

Extreme UX – It’s awesome

Hoy es tiempo de … un poco de UX.

Después de un largo tiempo sin escribir, por lo cual me disculpo si sigues este blog. Vuelvo a las andadas; pero sólo por lo impresionante de este video es que dejo de lado un poco el código habitual que suelo publicar.

Bueno este video lo vi al revisar el blog del MVP Juan Pablo Schmiede. El video corresponde al Xbox – Project Natal, muestran características como:

  • No tiene controles!!!!!!
  • El control es tu cuerpo entero, capurando todo el movimiento del mismo.
  • Puedes personalizar tu equipo dentro del juego.
  • Posee reconocimiento facial y de voz.
  • Tiene conexión con Internet puedes compartir elementos con otra persona como se ve en el video o simplemente juegar.
  • Puedes utilizarlo también para otras actividades de entretenimiento como reproducir películas o música.

En resumen, es una gran mejora en la experiencia de usuario. Seria muy interesante desarrollar aplicaciones con esa base … jeje. Pero en fin veremos como sigue el proyecto y haber si alguien se anima ha armar una aplicación.

Si no me crees mira el video.

Espero se entretengan. Saludos y Happy Coding!!!

3 Layers Applications with Java & MySQL

Hoy es tiempo de … 3 Layers Applications with Java & MySQL.

Bueno a petición de un amigo, habia creado estas guía en el formato pdf. En este post les comparto estas guías. El objetivo de las mismas es darles una perspectiva de como se arma una aplicación en tres capas utilizando Java y MySQL. Tenga en cuenta que esta no es la única forma, como dice el dicho existen muchos caminos para llegar a Roma; pero al menos se puede formar una idea.

La aplicación trata de un mantenimiento medio aburridito sobre una tabla cliente. Se trabaja como IDE Eclipse SDK 3.4, motor de base de datos MySQL 5.1 con su conector de Java. Se utiliza Java Swing, ODBC y Stored Procedure.

Espero sea de su agrado .. Saludos y Happy Coding!!!

WPF – Controls Part 2

Hola a todos, hoy es tiempo de …Controles WPF.

De nuevo vuelvo a escribir al tiempo, esto es porque de nuevo tuve algunos problemas con mi research. Bueno, continuando con la serie de post sobre controles de WPF hoy veremos 3 controles: Expander, ListBox y ComboBox.

Expander

En lo personal me agrada mucho este control puesto que nos brinda una experiencia bastante interesante y atractiva, oculta y muestra controles o información sin tener que hacer grandes roturas de cabezas para crearlo.

A continuación un fragmento de un expander.

   1: <Expander Header="This is a Expander" 
   2:     Name="ExpanderFirst" Padding="3" Margin="15,22,0,96" 
   3:     HorizontalAlignment="Left" Width="129" 
   4:     Collapsed="Expander_Collapsed" Expanded="ExpanderFirst_Expanded">
   5: </Expander>

En el código anterior podemos ver que posee propiedades comunes que ya comentamos en el anterior post. Una propiedad caracteristica de este control es “Header”, la cual contiene la información que se mostrará en la cabecera del control. Collapsed y Expanded hacen referencia a los eventos que manejará este control.

El resultado del anterior código es el siguiente.

expander



ListBox

Otro sobreviviente de los windows form. Según creo yo este control esta muy bueno y esta en su version mejorada y aumentada.

He acontinuación otro fragmento de código de este control.

   1: <ListBox Height="68" Name="listBox1" Width="120" 
   2:     Background="Silver" SelectionChanged="listBox1_SelectionChanged">
   3:     <ListBoxItem>Item1</ListBoxItem>
   4:     <ListBoxItem Background="Silver" BorderBrush="AliceBlue" Foreground="Azure">Item 1.5</ListBoxItem>
   5:     <ListBoxItem Foreground="Blue">Item2</ListBoxItem>
   6: </ListBox>

Bueno que se puede comentar aca … sigue con las propiedades comunes de los controles anteriores.

El resultado es mas o menos el siguiente.

listbox



ComboBox

Si he tenido un control que ha sido mi amigo fiel en los windows form, este sería uno de ellos. Otro sobreviviente también mejorado para WPF.

Seguidamente un pedazo de código correspondiente a este control.

   1: <ComboBox Name="comboBox1" Height="23" VerticalAlignment="Top" />

Si se preguntarán … qué frustrante es una línea? y qué hace esa línea? Bueno básicamente esa línea sólo muestra el combo vacío. Pero la aplicación que escribí rellena el combo en base a al ítem seleccionado de un ListBox.

El resultado de todo eso sería algo asi.

comboboxbefore

Antes


comboboxlater Después


Bueno el resultado de todo esto se puede aplicar de la siguiente manera.

wpfcontrol2

Espero les sea útil como referencia. Saludos y Happy Coding!!

Encapsulamiento en Java & C#

El día de hoy es tiempo de Encapsulamiento.

Bueno el encapsulamiento para los que no saben es un concepto de la OOP, el cual permite ocultar los campos mediante estructuras de datos, métodos u operaciones, haciendo asi que el usuario no tenga que preocuparse mucho en la implementación interna del mismo y en el caso de los campos permitiendo que sus valores no se alteren tan ”facilmente” aunque esta última parte es un poco susceptible dependiendo de como implementes tu software, sistema o lo que quieras desarrollar.

A mi me sirve mucho cuando trabajo con acceso a datos porque me permite organizar mejor mis clases de negocios para después persistirlas; pero bueno baste de palabrería, a continuación les dejaré la sintaxis de las formas que conozco en las que pueden encapsular campos utilizando Java y C#.

Para Java:

   1: // Para asignar un valor a un campo.
   2: public void set[Campo]([Tipo_Dato) value){
   3:     [Campo] = value;
   4: }
   5:  
   6: // Para retornar un valor de un campo.
   7: public [Tipo_Dato] get[Campo](){
   8:     return [Campo];
   9: }

Es decir si tuviesemos un campo Name de tipo String el código mas o menos sería el siguiente:

   1: public void setName(String value){
   2:     Name = value;
   3: }
   4:  
   5: public String getName(){
   6:     return Name;
   7: }

Para C#

   1: // Forma 1. Con metodos
   2: // Para asignar a un valor a un campo.
   3: public void [NombreMetodo]([Tipo_Dato] value)
   4: {
   5:     [Campo] = value;
   6: }
   7:  
   8: // Para retornar el valor de un campo.
   9: public [Tipo_Dato] [NombreMetodo]()
  10: {
  11:     return [Campo];
  12: }
   1: // Forma 2. Con propiedades
   2:  
   3: public [Tipo_Dato] [Nombre_Propiedad]
   4: {
   5:     get
   6:     {
   7:         return [Campo];
   8:     }
   9:  
  10:     set
  11:     {
  12:         [Campo] = value;
  13:     }
  14: }

Imaginando de nuevo que tenemos un campo Name de tipo string (noten que en .NET el tipo de dato es string, en Java es String …. les debo un post de comparación de tipo de datos) el encapsulamiento podría ser el siguiente:

   1: public void assignName(string value)
   2: {
   3:     Name = value;
   4: }
   5:  
   6: public string returnName()
   7: {
   8:     return Name;
   9: }

   1: public string name
   2: {
   3:     get
   4:     {
   5:         return Name;
   6:     }
   7:  
   8:     set
   9:     {
  10:         Name = value;
  11:     }
  12: }

Espero que les sirva este pequeño concepto ya que a mi me sirve mucho en la implementación de muchos programas. Saludos y hasta la próxima.

Happy Coding!