Error en la base Model del SQL Server: The log scan number passed to log scan in database ‘model’ is not valid.

No se si lo puede resolver bien, pero quedo resuelto. (Si alguien tiene otra opción que me avise, o lo postee como comentario del articulo)

Introducción

Luego de un corte de luz en una maquina (últimamente por esta zona la empresa de energía no se lleva bien con los usuarios)  (si…! que no tiene UPS) queriendo levantar la DB nos encontramos con este error

Mensaje de Error:
The log scan number (22:160:1) passed to log scan in database ‘model’ is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup.

En el registro de Eventos:
image

 

En el LOG del SQL Server

Ubicación: C:Archivos de programaMicrosoft SQL ServerMSSQL.1MSSQLLOG

image

The log scan number (22:160:1) passed to log scan in database ‘model’ is not valid. This error may indicate data corruption or that the log file (.ldf) does not match the data file (.mdf). If this error occurred during replication, re-create the publication. Otherwise, restore from backup if the problem results in a failure during startup
2009-02-19 13:25:36.34 spid9s      SQL Trace was stopped due to server shutdown. Trace ID = ‘1’. This is an informational message only; no user action is required.

 

Cuando quise iniciar el servicio del SQL Server nos arrojaba estos errores…

Entonces?

Primera aproximación a la solución:

Iniciar el SQL Server cueste lo que cueste 🙂

Es decir con unos parámetros para que inicie con lo mínimo e indispensable (mas ayuda en Usar las opciones de inicio del servicio SQL Server)

Los dos que necesitaba eran

sqlservr.exe -sMSSQLSERVER -c –f

-c
Acorta el tiempo de inicio al iniciar SQL Server desde el símbolo del sistema. Normalmente, SQL Server Database Engine (Motor de base de datos de SQL Server) se inicia como un servicio llamando al Administrador de control de servicios. Dado que SQL Server Database Engine (Motor de base de datos de SQL Server) no se inicia como un servicio cuando se inicia desde el símbolo del sistema, use -c para omitir este paso.
-f

Inicia una instancia de SQL Server con la configuración mínima. Esta opción es útil si el valor de una opción de configuración (por ejemplo, la confirmación excesiva de memoria) ha impedido el inicio del servidor.

Por si no conocemos (como yo) cual era el ejecutable del SQL Server… podemos darnos una idea de donde inicia el servicio de windows:

C:Archivos de programaMicrosoft SQL ServerMSSQL.1MSSQLBinnsqlservr.exe» -sMSSQLSERVER

image

 

TAMPOCO FUNCIONO 🙂

Me arrojo en la línea de comandos el mismo error.

Solución rápida, efectiva y duradera… (aquí el que conoce otra me avisa)

  • Obtener un base de datos model del SQL 2005
    image
  • Copiarla al directorio del servidor que me esta dando dolores de cabeza
  • Iniciar el SQL Server
  • Tomar un Coca-Cola, Red-Bull o Cerveza Helada (este paso lo pueden obviar)

 

Enlaces

Testing ASP.NET Website: Lightweight Test Automation Framework

El equipo que testea la calidad de los productos liberados de ASP.NET (parece que es algo así…) comparte con nosotros su framework de test “liviano”, ya que es una simple componente que podemos agregar a nuestros proyectos y realizar los test, es decir podremos hacerlo con las versiones express de VS2005/VS2008
NOTA: Esto lo tengo desde hace “varias” semanas en el borrador (desde Octubre.2008 ) y justo ayer leo un post que salió una nueva release (4.Feb.2009) así que lo volví a sacar brillo y aquí esta.

Para lo que queremos ver inmediatamente la ayuda online, en este caso no la tenemos “todavía” pero tenemos la firme propuesta del equipo de ASP.NET QA Team en su Roadmap, por ahora solo podemos descargar un ejemplo sencillo para ir “previsualizando este framework”

Para descargar el ejemplo el enlace se  encuentra al final del articulo.

 

Como utilizarlo?

Para poder utilizarlo simplemente hay que seguir 3 pasos para armarlo, y ejecutarlo (paso 4)

  1. Copiar la componente Microsoft.Web.Testing.Lightweight.dll en la carpeta Bin (donde si no?).
    image 
    NOTA:Esta release es del Sep.2008, si van a Codeplex podrán descargar la nueva versión
  2. Copiar dos archivos Default.aspx y DriverPage.aspx en una carpeta, que por convención nos proponen en una carpeta Test
    (en las versión definitiva no tendremos que copiar cosas extrañas a nuestro proyecto)
    image
  3. Crear una/s clase/s Test
    (Para aclarar un poco mas, si tenemos un Proyecto Website en la carpeta App_Code, en cambio en un Aplicación Web en cualquier lugar de nuestro proyecto)
    Creamos la clase de test importando Microsoft.Web.Testing.Light con atributos especiales en la clase <WebTestClass()> y en los métodos <WebTestMethod()>
    Como veran en el ejemplo es muy sencillo vamos a ir “escrudiñando” la pagina, en donde se encuentra una tabla de Productos que vamos a realizar un ordenamiento y luego un paginado. Se tiene que poder reproducir este test las veces que sea necesario por eso no nos sirve de mucho este ejemplo, solo quería ser eso un ejemplo de como utilizar incluso con postback, también podemos detectar y esperar un postback asincrónico con …Click(WaitFor.AsyncPostback)
    En el ejemplo que se puede descargar de Codeplex contiene postback asincrónico, y edición de un gridview.

    Ejemplo:

    Imports Microsoft.VisualBasic
    Imports Microsoft.Web.Testing.Light
    
    <WebTestClass()> _
    Public Class ProductListTests
    
        <WebTestMethod()> _
        Public Sub ProductosListadoOrdenamientoTest()
    
            Dim pagina As HtmlPage = New HtmlPage
            pagina.Navigate("/Products/ProductList.aspx")
    
            Dim gvProduct As HtmlTableElement = CType(pagina.Elements.Find("gvProduct"), HtmlTableElement)
    
            'Ordenando por la primer columna Name de Products
            gvProduct.Rows(0).Cells(1).ChildElements(0).Click(WaitFor.Postback)
    
            'Verificando la operacion de ordenamiento
            Assert.AreEqual("AWC Logo Cap", gvProduct.Rows(3).Cells(1).GetInnerText())
    
        End Sub
    
    
        <WebTestMethod()> _
        Public Sub ProductosListadoPaginadoTest()
    
            Dim pagina As HtmlPage = New HtmlPage
            pagina.Navigate("/Products/ProductList.aspx")
    
            Dim gvProduct As HtmlTableElement = CType(pagina.Elements.Find("gvProduct"), HtmlTableElement)
    
            'Verificando el ultimo registro de la pagina 1, columna 2 ("Product Number")
            Assert.AreEqual("CN-6137", gvProduct.Rows(10).Cells(2).GetInnerText())
    
            'Ir a Pagina 3
            gvProduct.Rows(11).ChildElements.Find("a", 1).Click(WaitFor.Postback)
    
            'Verificando el ultimo registro de la pagina 3, columna 2 ("Product Number")
            Assert.AreEqual("FW-9160", gvProduct.Rows(10).Cells(2).GetInnerText())
    
    
        End Sub
    
    
    End Class
  4. Ejecutar los test

    En la versión preliminar de este componente habia que ir a la carpeta Test (con unos archivos especiales) que nos ayudan a ejecutarlos (creo que en la beta que salió ya no es necesario, pero queda para otro post)

    Por un lado el listado de Test que queremos correr y por el otro la pagina donde efectivamente se “ejecutara” esta navegación automática

    image

 

 

Ejecutando los test

image

Si da un error el test obviamente el color de fondo será rojo 🙂

 

 

Demo

La demo las puedes descargar de aquí

Si no puedes visualizar click aquí

  • Utilizo la DB: AdventureWork (para descargar por aqui).. esta vez no utilice AdventureWorkLT (para la próxima)
  • Que tiene la demo?

    image

 
 

 

Enlaces

[OT] Samsung Omnia i900: Cambio de rom a español (traducida de la versión DXHL3)

Este post no tiene nada que ver con programación, ni con proyectos, ni con nada de lo que siempre escribo ni mi trabajo diario (eso mismo me dijo novia, ahora sos técnico de celulares/mobiles?) Pero me pareció interesante comentar el proceso y que quede documentado.
Como Raúl (un amigo de un amigo) me pidió el favor de cambiar su Samsung Omnia i900 a idioma español, antes estaba en Portugués, de donde lo habrá comprado ? 🙂

NOTA: No esta demás decir que esto puedo inutilizar el teléfono. Por suerte salió todo bien

Inicio…

Como no tenia ni idea de como hacerlo preguntando a San Google (Pienso, luego… ¡luego Googgle! // Filosofía y expresión urbana en grafitis)
Yo pensaba que Windows Mobile tenia algo de MUI del Windows XP, 2003, Vista… algo así como paquetes de idioma, pero NO LO TIENE…. y eso que lo lei por aquí…

NOTA: Si alguien conoce la implementación para Mobile de MUI me avisa como es el tema… 🙁

Encontré con varios post de varios ROM (ya que hay que actualizar la memoria Flash del dispositivo)

El post que me gusto y utilice fue este:

Otra forma de realizarlo es con un programa llamado: GRANDPRIX, pero en este caso no lo utilice.

Si quieres “cocinar”  tu propia rom…

 

 

Síntesis de lo que leí

Según los comentarios esto se realiza en un XP, parece que nadie lo probo (satisfactoriamente en un Vista), así que yo no iba a ser el primero
Se conecta todo, se prueba la conectividad al teléfono, se reinicia el celular lo detecta el programa y luego click en el botón START y listo 🙂

Que necesitamos:

Mas Varias descargas para el i900 (aquí en Centro de Soporte de Samsung)

 

 

Pasos a seguir para comenzar

  1. Instalar el ActiveSync
  2. Luego instalar los drivers de Samsung
  3. Tener el celular/mobile cargado al 100%
  4. Apagar el celular/mobile
  5. Conectar al cable USB
  6. Encender el celular
  7. Tu computador lo detectara (idem a cuando introducimos un pendrive)
  8. Tu ActiveSync lo detectara
  9. … estamos listos para empezar
  10. Apagamos el celular/mobile
  11. Ejecutamos el programa i900DXHL3FRAN.exe
    (se encuentra en la descarga de la rom, allí también con los drivers usb)
  12. cuando volvemos a prender el celular/mobile… esperamos que el programa lo detecte
  13. Cuando lo detecta presionamos el botón START
  14. Esperar hasta que el programa nos avise: JOB DONE.

 

Programa: i900DXHL3FRAN.exe

image

 

Una vez que reiniciamos el dispositivo lo detecta…

image

Mi espectacular imagen….

img206

 

Empezando descargando la eboot (parece ser un sector de boteo, me hace acordar los router cisco… donde teniamos que botear en modo rom o algo parecido)

image

Luego de este paso empieza la carga

image

La primera descarga es de la imagen del PDA y luego del TELEFONO

image

En el teléfono vamos visualizando esta carga (por suerte porque no me daba señales de vida)

 img208

 

Finalizando el trabajo 🙂

image

 

Si vamos a ver al versión del teléfono

 image

 

Espero que a alguien le sirva de ayuda o guia…

Aquí todo el log que iba arrojando el programa

 

-------------------------------------------------------------------------------------
PDA Device ready to download! 
Please Press Start Button if You want to download image now...
-------------------------------------------------------------------------------------

PDA 1 starts downloading...
Don't plug it out until the label becomes blue!!!
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
Step 1. Eboot image Downloading
Downloading EBOOT...
EBOOT image downloaded.
PDA Reboot to download Eboot twice!!!
-------------------------------------------------------------------------------------

PDA Device Found!
-------------------------------------------------------------------------------------

PDA Device ready to download! 
-------------------------------------------------------------------------------------

PDA 1 starts downloading...
Don't plug it out until the label becomes blue!!!
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------

Step 1. Eboot image Downloading
Downloading EBOOT...
EBOOT image downloaded.

Step 2. PDA image Downloading
Downloading PDA region #1(DISKIMAGE)...
PDA Image Length : 119954067 
PDA image downloaded.

Step 3. Customer image Downloading
Downloading CSC...
GetSize : 16832512 
CSC finished.

Step 4. Phone image Downloading
Downloading PHONE...

Switch USB to Phone Success... 
Port Open retry (25) 
Port Open retry (24) 
Port Open retry (23) 
Port Open retry (22) 
Port Open retry (21) 
Port Open retry (20) 
Port Open retry (19) 
Port Open retry (18) 
Port Open retry (17) 
Port Open retry (16) 
Port Open retry (15) 
Port Open retry (14) 
Port Open retry (13) 
Port Open retry (12) 
Port Open retry (11) 
Port Open retry (10) 
Port Open retry (9) 
Port Open retry (8) 
Port Open retry (7) 
Port Open retry (6) 

PHONE finished!

AdventureWorksLT que te sucedió? Base de datos en modo Read-Only, Single User? Cambiando estado.

Utilizando la DB de ejemplo AdventureWorksLT (para SQL2005 SP3a) y trabajar sobre el Win Vista para un ejemplo me instala en modo Read-Only y Single User

AdventureWorksLT que te sucedió?
Tal vez con la imagen en gris podamos ver que “algo huele mal en Dinamarca…” 🙂

image

…y que hacemos para cambiar el estado?

USE master;
GO
EXEC sp_dboption 'AdventureWorksLT', 'read only', 'FALSE';

NOTA: Lo que estaba leyendo en la ayuda es que esta sp_dboption se quitará en la versión siguiente de Microsoft SQL Server..(from MSDN)

Ahora deberíamos utilizar ALTER DATABASE con la opción seteada en {READ_ONLY | READ_WRITE} según corresponda son las opciones db_update_option

ALTER DATABASE AdventureWorksLT SET READ_WRITE

 

Cambiando Single User

image

Para el cambiar el estado Single User las opcion de db_user_access_option son { SINGLE_USER | RESTRICTED_USER | MULTI_USER }

ALTER DATABASE AdventureWorksLT SET MULTI_USER


Y luego todo ok… a seguir con el ejemplo que estaba armando

image


   

Enlaces

 

  • ALTER DATABASE (Transact-SQL)

    Modifica una base de datos o los archivos y grupos de archivos asociados a la base de datos….

    • Opciones de ALTER DATABASE SET

      En este tema se describe la sintaxis de ALTER DATABASE, relacionada con la configuración de las opciones de las bases de datos.

Texto dentro de una imagen en ASP.NET: Label into Image

Tenia un ejemplo de escribir dentro de una imagen en ASP.NET, así que aquí esta la demo 🙂
Además por una pregunta en los foros de MSDN me vi sanamente obligado a terminarlo y publicarlo.

El ejemplo lo pueden descargar desde aquí:


(si no lo puedes visualizar click aquí)

 

No es muy grande, pero es para reflejar como insertamos estos textos on-the-fly sobre las imágenes

Desde este formulario… Generamos esto…
(lindo “bicho” como dice mi novia…)
image image

Desde el formulario enviamos parámetros para el texto que se visualiza, el tipo de fuente (que es la que esta instalada en el servidor no en la maquina), el color que lo obtenemos desde el listado que nos brinda el framework, y luego opciones con respecto a la posición dentro de la imagen.

 

Escribiendo un Texto en un Grafico

Utilizaremos para escribir el método DrawString de un objeto Graphic.
Tiene 6 sobrecargas el método el que utilizare en el ejemplo es DrawString(String, Font, Brush, Single, Single) donde enviaremos el texto, la fuente (tipografía, tamaño, etc.) el pincel/brocha (donde coloremos el color de la fuente) y la posición dentro de la imagen donde queremos que se dibuje.

If _texto.Trim.Length > 0 Then
      Dim marcaAguaFuente As Font = ObtenerFuente()
      imagenGrap = Graphics.FromImage(miniatura)
      imagenGrap.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
      imagenGrap.DrawString(_texto, marcaAguaFuente, ObtenerColor(_fuenteColor), _fuentePosX, _fuentePosY)
  End If

Si quieres mas de un frase o texto solo hay que repetir el método

 

Un ejemplo con sombra

A veces para lograr una sombra en una frase mediante la escritura de dos frases una un poco mas abajo de la otra y con el color de sombra correcto
(en este caso negro)
NOTA: En un examen de certificación de .NET una de las preguntas era esto 🙂

image

image

...
'Con Sombra muy basica
imagenGrap.DrawString(_texto, marcaAguaFuente, ObtenerColor("Black"), _fuentePosX + 2, _fuentePosY + 2)
imagenGrap.DrawString(_texto, marcaAguaFuente, ObtenerColor(_fuenteColor), _fuentePosX, _fuentePosY)

 

 

Tips

Este ejemplo solo quiere ser eso mismo… un simple ejemplo.
Hay que tener en cuenta que tener en la URL varios parámetros para formatear nuestra salida es un pequeño espacio para que alguien “juegue” con ello. Podrían tranquilamente encriptar nuestro querystring para esto mira el articulo:

Pero algunas sugerencias del Querystring, es decir de la URL

  • Si necesitamos enviar algo por querystring:
    • Formatearlo antes y después:
                   HttpUtility.UrlEncode(mensaje)
                   HttpUtility.UrlDecode(mensaje)
    • Tener cuidado con la longitud de nuestras URL (creo que son estos valores…)
      • EE5/IE6/IE7.0 soportan 2048 caracteres (256bytes)  – fuente: http://support.microsoft.com/kb/208427
      • IE8?
      • Opera  parece que no tiene limites…
      • Firefox parece que no tiene limites…
      • Chrome?

 

 

 

 

 

  •  
    • Tener en cuenta la seguridad, la URL es “muy sensible”. Podrías encriptarla (ver el articulo mas arriba)

 

Enlaces

  •  Graphics.DrawString (Método)
    Dibuja la cadena de texto especificada en la ubicación especificada y con los objetos Brush y Font especificados.

Listado de Colores a partir de Drawing.Color

Al fiel estilo de un articulo anterior

Aquí como obtener el listado de colores en una lista y enlazarlo a un dropdownlist

Dim listadoColores As New List(Of String)

For Each c As Drawing.Color In System.ComponentModel.TypeDescriptor.GetConverter(GetType(Drawing.Color)).GetStandardValues()
   listadoColores.Add(c.ToString.Substring(7, (c.ToString.Length - 8)))
Next

cboFuenteColor.DataSource = listadoColores
cboFuenteColor.DataBind()

 image

 

Espero que a alguien le sirva de ayuda o guía.

 

Enlaces

  • TypeConverter.GetStandardValues

    Devuelve una colección de valores estándar para el tipo de datos para el que está diseñado este convertidor de tipos.