Amigo mío tu que tienes problemas con la instalación/desinstalación de una MSDE (Microsoft SQL Server Desktop Engine) aquí tienes la forma de no “estresarte” demasiado (o no como nosotros, Agustín, Cristina y el que escribe)
Luego de varias horas pudimos dar con la desinstalación manual, entre Agustín y Cristina .
La desinstalación automática nos generaba error, algo fallaba en el instalador .msi… hacíamos un log de la desinstalación pero no nos daba nada.. así que acudimos a la desinstalación manual.
Pasos (que hicimos)
Paso 1: Limpiar .msi (podríamos decir …corrupto)
Primeramente descargamos el conocido Windows Installer CleanUp Utility
Esta opción no desinstala nada, solo nos limpia los archivos que el windows installer coloca en una ubicación temporal para “conocer” cuando hay que desinstalar automáticamente (que en este caso nos generara error, así que no nos servía)
Paso 2: Manualmente eliminar archivos y carpetas
Ubicación predeterminada:
- Instancia predeterminada: \Program Files\Microsoft SQL Server\MSSQL\Data
- Instancia con nombre: \Program Files\Microsoft SQL Server\MSSQL$<INSTANCENAME>\Data
Hay que eliminar tanto Data y Binn
Aqui eliminar toda la carpeta o en ocasiones si existe en Archivos de programa la carpeta “Microsoft SQL Server” no instala
Si necesitas la ubicación y alguien en la instalacion la modifico puedes ir:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Setup\SQLDataRoot
Mas info aquí
Paso 3: Limpiar “manualmente el registro de windows”
Aqui hay que eliminar una serie de entradas.. que las dejo copiadas pero estan detalladas en Microsoft Support
- Para una instancia predeterminada de MSDE 2000, quite la clave siguiente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer - Para un MSDE 2000 instancia con nombre, quite la clave siguiente:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<INSTANCENAME> - Si la siguiente clave del Registro señala a MSDE 2000 instancia ProductCode , quite el valor InstanceComponentSet.x . Por ejemplo, InstanceComponentSet.1 tiene un valor que coincide con el código de producto de sqlrun01.msi:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Component Set\InstanceComponentSet.1 - Quite la clave del registro de servicio de SQL Server.
Para una instancia predeterminada de MSDE 2000, quite las siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServer
Para un MSDE 2000 instancia con nombre, quitar las siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQL$<INSTANCENAME> - Quite la clave de registro de servicio SQLServerAgent:
Para una instancia predeterminada de MSDE 2000, quite las siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLServerAgent
Para un MSDE 2000 instancia con nombre, quitar las siguientes:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SQLAgent$<INSTANCENAME>
Mas info de estos pasos: http://support.microsoft.com/kb/320873
Paso 4: Sin reiniciar podremos volver a instalar una instancia.
Instalación con parámetros personalizados:
El .bat que utilizamos:
setup.exe /qb+ SECURITYMODE=SQL DISABLENETWORKPROTOCOLS=0 INSTANCENAME=MINSTANCIA SAPWD=mipassword /log c:\Logsql.log
Mas info de opciones de instalación para MSDE: http://msdn.microsoft.com/es-es/library/aa214935(en-us,SQL.80).aspx
Enlaces
El que esta trabajando con Entity Framework 1.0 (para VS2008 SP1)… sabrá que:
Cuando creamos el modelo las foreign keys las utiliza para crear las relaciones, y mediante propiedades navegar entre ellas. O sea no necesitaríamos las FK para nada, porque es algo que la DB necesita para relaciones (“larga vida a las base de datos relacionales”)
Esta particularidad de no visualizar las claves foráneas me parece muy bueno, ya que no la necesitamos en POO
NOTA Adjunta: en EF 4.0 (que seria la 2.0 pero la versión sigue a la del Framework .NET) al momento de generar el modelo pregunta si queremos “visualizar las foreign keys” :)
A través de una pregunta en los newsgroups y foros (que mas bien me vino por email) necesitaban si o si desesperadamente el identificador de la foránea, así que lo dejo por aquí para referencia.
Pensamiento lateral: (pensando pensando.. en que momento utilizar esto) Se me ocurre cuando estamos visualizando en una pagina ASP.NET y queremos ver el detalle de algo adjunto o enviarlo a una función javascript seria necesario ir a las clave foránea, en vez de traer la entidad relacionada. Caso claro es las grillas donde por alguna razón tenemos que visualizar una imagen asociada y deseamos enviar el id al handler que despliega la misma. (Esto es solo un pensamiento en voz alta)
Veamos lo que necesitamos…
En la DB la tabla que mapeamos…
Si tenemos una entidad relacionada con otras, o sea con una relación de conocimiento (Asociación), nos queda en nuestro modelo
donde podremos apreciar que no se encuentras las claves foráneas
Pero si no puedes dormir sin esta información…
Como lo obtenemos?
Opción recomendada utilizando elegantemente expresiones lambda, y buscamos el nombre de la clave foránea que tanto deseamos:
En VB.NET
Dim tipoPublicidadId As Int32 = Int32.Parse(publicidadArchivo.TipoPublicidadReference.EntityKey.EntityKeyValues.First(Function(k) k.Key = "TipoPublicidadId").Value)
En C#
int tipoPublicidadId = (int)publicidadArchivo.TipoPublicidadReference.EntityKey.EntityKeyValues.First(k => k.Key == "TipoPublicidadId").Value;
Podemos por índice…, algo que nunca me gusto utilizar “índices” (vaya uno a saber en que posición se encuentra la que necesitamos,… pero igualmente va el código
En VB.NET
Dim tipoPublicidadId As Int32
If publicidadArchivo.TipoPublicidadReference.EntityKey IsNot Nothing Then
tipoPublicidadId = Int32.Parse(publicidadArchivo.TipoPublicidadReference.EntityKey.EntityKeyValues(0).Value)
End If
EN C#
int tipoPublicidadId;
if (!IsNothing(publicidadArchivo.TipoPublicidadReference.EntityKey)) {
tipoPublicidadId = Int32.Parse(publicidadArchivo.TipoPublicidadReference.EntityKey.EntityKeyValues(0).Value);
}
Cuando se cargan?
Las asociaciones se cargan y completan cuando hacemos Include en la consulta LINQ to Entities relacionada, o la carga explicita con mediante el método Load
NOTA: Hasta EF 4.0 no tenemos Lazy Load “nativo”.
Enlaces
El lunes pasado aprobé el Examen 70-547 que es sobre desarrollo de aplicaciones web.
El que faltaba para Microsoft Certified Professional Developer (MCPD) en Web Applications
También poniendo semilla “empecemos por casa” del post anterior: Curso Terminado: Becas Control+F Curso .NET 240hs (UTN – FRRe).
Un Testing Center mas cerca…
Lo bueno en esta oportunidad e interesante es que no tuve que viajar hacia Buenos Aires (o Rosario o Córdoba), sino que “cruzando el puente” en Resistencia (Chaco) tenemos un Testing Center de Prometric, nuestros colegas y amigos de Pampa Technologies (PampaTech) (ex MegaKey SRL) solo que esta en el listado de Prometric como el ultimo. Muy buena la atención de Rafael.
Preparación
Para eso durante los últimos días me prepare (además de la experiencia que uno carga en el trabajo, y participaciones en newsgroup/foros) como siempre lo hago mediante el libro del Training Kit del examen.
Que viene con un CD
| MCPD Self-Paced Training Kit (Exam 70-547): Designing and Developing Web-Based Applications Using the Microsoft .NET Framework (Hardcover) http://www.amazon.com/MCPD-Self-Paced-Training-Exam-70-547/dp/0735623406 Puedes darle una mirada interna desde el enlace a Amazon.com Temas: - Application Requirements and Design
- Decompose Specifications for Developers
- Design Evaluation
- Creating a User Interface
- Creating and Choosing Controls
- Data Validation
- Delivering Multimedia
- Component Design
- Component Development
- Reusable Software Components
- Application Logic Layer
- Logging and Monitoring
- Application Configuration
- Define and Evaluate a Testing Strategy
- Creating Development Tests
- Deploying an Application
- Supporting an Application
|
En el libro hay referencias a URL en la mayoría hacia MSDN Library, o artículos de MSDN Magazine.
Lo que me llamo la atención (sabia que era así, pero me hizo pensar) es que las preguntas no eran directas sino mas bien te presenta unos requerimientos y tendrás que elegir entre las diferentes alternativas teniendo en cuenta tu diseño lógico de tu aplicacion, físico, componentes, base de datos, reusabilidad), luego varios preguntas sobre estrategia de testing (unitarios, de integración, stress, etc.)
Fue un examen de sin “pica-código” (como dirían mis amigos españoles) sino mas bien de que “pensamiento exploratorio”, aunque no tan profundo como pensaba (Matías Iacono nos daba un indicio de tranquilidad sobre la profundidad del examen); en la mayoría de las preguntas el sentido común viene a nuestra mente, así que la experiencia también cuenta.
NOTA: Para que que esta pensando que estoy diciendo parte del examen y que es parte del NDA, en el CD adjunto al libro viene una batería de preguntas que ayudan a perfilarse (no son exactamente como el examen, pero ayudan) y allí se perfilan de ese manera.
Enlaces