Windows Installer CleanUp Utility

Otra cortita xD .... hace un momento necesite esta herramienta y lo posteo como aporte pa la red :)

En ocaciones nos sucede que instalamos o desinstalamos mal algunos productos por X motivos... son estas ocaciones en las que personalmente me ayudo mucho esta herramienta.

Lo que hace es eliminar la informacion de configuracion de Windows Installer con nuestro programa, como el registro u otras mas. Bueno esto funciona siempre y cuando el software fue instalado utilizando Windows Installer.

Windows Installer Clean Up

OJO!!! este herramienta NO desinstala el software!, solo elimina al informacion relacionada a la instalacion, si en algun momento volvemos a instalar es recomendable hacerlo en el mismo directorio que fue instalado anteriormente, para que no existan archivos duplicados y que ocuparan espacio en el disco.

Link de Interes

http://support.microsoft.com/kb/290301

Bytes!

Intercalación [Collation] en SQL Server

Es sabido que SQL Server nos permite establecer propiedades para configuraciones regionales, codigos de pagina, soporte multilingüe, etc. para el tema de intercionalizacion, por ejemplo cuando en algun momento quisieramos que solo en una columna de nuestra tabla tenga sencibilidad para mayusculas y minusculas, mas en toda nuestra BD no sea necesario eso.

Ahora como una pequeña introduccion al tema, SQL Server puede manejar 4 niveles de Intercalacion :

  • Nivel de Servidor
    Personalmente considero que es la principal ya que de aqui hereda toda configuracion de Intercalacion que no se indique de manera explicita.
  • Nivel de Base de Datos
    Puede heredar del Servidor o se puede escoger una diferente.
  • Nivel de Columna
    Se define al momento de crear la tabla o columna
  • Nivel de Expresión
    Son expresiones utilizadas en Transact-SQL

Ahora comento un poco como conoci esto: sucedio tras el pase de nuestra BD de desarrollo, hacia el ambiente de pruebas del cliente.
En nuestro servidor de desarrollo tenia instalado el SO en español y la SQL Server tambien en español, pero en el Servidor de desarrollo del cliente, tenia el SO en Ingles y el SQL Server tambien en ingles.
Ahora levantamos el Backup todo bonito y terminamos algunas configuraciones posteriores y ejecutamos la aplicacion. Llego un momento en que la aplicacion no funcionaba(y ahi salta la grandiosa frase, "pero en mi maquina si funcionaba..." (risas xD)). El error que mostraba la aplicacion era :

Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Modern_Spanish_CI_AS" in the equal to operation.

y son en esos momentos en los que: "what???? y eso de donde salio????smile_confused". El error saltaba cuando se llamaba a un Store Procedure que creaba y consumia tablas temporales [#Table], y pues cuando trabajabamos con tablas temporales estas no se crean en el vacio se crean en la System Table tempdb y cuando miramos en sus propiedades ooohhh sorpresa "SQL_Latin1_General_CP1_CI_AS" chess eh aqui el problema y es que sucedio que el administrador de ese server solo le dio Next Next Finish, punto negativo para ellos (o tambien puede ser por que nosotros no le indicamos nada smile_sarcastic punto negativo pa nosotros...plop!), el tema fue que cogio todas las configuraciones por default y las asigno a las System Tables, si no se le indica al Instalador nada sobre la Intercalacion pues este coge la Intercalacion del Sistema Operativo.

Pero por con esto no quiere decir que sea definitivo, hay maneras de modificarlas, claro siendo conscientes que hay peligro por la compatibilidad con la nueva Intercalacion.


Para hacer las consultas nos niveles de Intercalacion :

---------------------------------------------------------------------
-- A TRAVEZ DE TRANSACT-SQL PODEMOS HACER CONSULTAS PARA VERIFICAR --
-- LA INTERCALACION EN NUESTRO SERVIDOR: --
-- (segUn el lenguaje de instalación, varia la consulta --
---------------------------------------------------------------------
-- Para Consultar la Intercalacion a nivel de Servidor

SELECT CONVERT(varchar, SERVERPROPERTY('intercalación'))
SELECT CONVERT(varchar, SERVERPROPERTY('collation'))

-- Para consultar a nivel de base de datos:

SELECT CONVERT(varchar, DATABASEPROPERTYEX('pubs', 'intercalación'))
SELECT CONVERT(varchar, DATABASEPROPERTYEX('pubs', 'collation'))

-- Tambien podemos usar el SP del Sistema y mirar en la columna [Status]

Exec sp_helpdb pubs

-- Con el SP del Sistema sp_help, podemos ver las intercalaciones en las columnas.

USE pubs
EXEC SP_HELP authors

-- Para consultar la lista de todas las intercalaciones SQL y Windows.

SELECT * FROM :fn_helpcollations()

-- Para consultar las propiedades de una intercalación.

SELECT COLLATIONPROPERTY('Latin1_General_CS_AI', 'codepage')
SELECT COLLATIONPROPERTY('Modern_Spanish_CS_AI_KS_WS', 'codepage')



Para modificar podemos usar estas lineas:




-- Para modificar la Intercalacion a nivel de Base de Datos
ALTER DATABASE DbPrueba COLLATE SQL_Latin1_General_CP1_CI_AS

-- Para modificar al Intecalacion a nivel de Columna
ALTER TABLE tblCiudad ALTER COLUMN f_pais varchar (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL



Ahora tambien se puede hacer la modificacion a nivel de Servidor, pero tenemos 2 opciones :

1.- Recontruir la Master, pero esto no es tan sencillo como los anteriores, para SQL Server2k se puede utilizar la herramienta REBUILDM, para SQL Server2k5 hay que hacerlo desde la media de instalacion, indicando en el wizard de modificacion (asi dice en la MSDN Library, pero personalmente fue el unico que no encontre, seguire intentando y luego lo posteo).


2.- Instalar Nuevamente el Servidor de BD, jajaja si pues realmente escoges esta opcion en casos extremos o si quieres asegurarte que funcione bien! xD


ventana_Colletion



Luego de realizar las modificaciones la aplicacion funciono tranquila smile_regular 
Pdta. Solo como recomendacion, nunca instalen Next Next Finish, lean hasta el Contrato de Instalacion antes de pulsar Next(Siguiente), y traten de seleccionar la instalacion Personalizada(Custom) ya que con esto podemos configurar las cosas como deseemos y no perdamos tiempo valioso reconfigurando o causando funcionamientos inesperados.


Links de Interes:


[Parte de este post es resumen de este enlace y que me sirvio como guia para solucionar mi inconveniente]

http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/MTJ_2511/default.aspx



http://technet.microsoft.com/es-es/library/ms143269(SQL.90).aspx


http://geekswithblogs.net/mskoolaid/archive/2005/12/17/63413.aspx


Bytes!

Instalar SQL Server 2000 en Windows XP

Seeseseeeee ya lo se, es un tema bien pero bien anticucho (teniendo en cuenta que ya estamos en SQL Server 2008 y Windows Vista), pero me vi en la necesidad de instalar esta pareja de software, ademas teniendo en cuenta que tengo instalado en mi PC SQL Server 2005 y estoy muy seguro que no soy el unico en el mundo que le sucedio esto!!!

Bueno tenia entendido desde el Instituto que en Windows XP solo se podia instalar las herramientas cliente de SQL Server 2000 o el Desktop Engine, bueno pero hoy me entere años despues que si se puede! (claro es un si a media caña, ya que no estan disponibles todas sus funciones).

1.- En el CD de Instalacion del SQL Server 2000 o donde tengas el instalador xD : Navegamos hasta  Unidad:\msde\setup.exe y lo ejecutamos.
Ahora aqui viene algo intesante, cuando yo hice esto pues no me dejaba instalar y salia este mensaje:

El nombre de la instancia especificado no es válido.

Asumo que era por que ya tenia instalado el SQL Server 2005, mmm asi que opte por instalar de esta manera (desde linea de comando) :

Unidad:\msde\setup.exe INSTANCENAME="[NombreDeInstancia]"


esta demas decir que [NombreDeInstancia] lo cambio por el nombre de la nueva instancia de mi SQLServer 2000.

Una vez instalado, reiniciamos el equipo, y al iniciar te das cuenta que en al barra de tareas figura el clasico Service Manager, y si no estan iniciado los servicios los iniciamos.

2.- Nuevamente en el CD de Instalacion navegamos a esta ruta :

   Unidad:\x86\setup\setupsql.exe

Ejecutamos y seguimos los pasos, cierto que siempre nos saldra el mensajito que no se puede instalar la version server sino solo las herramientas cliente, acepta nomas xD e instalas todo normal.

Luego de reiniciar la PC,  abrimos el historico Enterprice Manager y configuramos agregando una nueva instancia, si no ves el nombre de instacia ( como fue mi caso ), puedes sacar el nombre de la instancia instalada, desde el Service Manager. (en mi caso fue [NombreMaquina]\[NombreInstancia] ).

Y asunto solucionado! digo Instalado! jejeje xD

Bytes!

[SSIS] Excel Source y valores NULL

Esto me acaba de suceder hace unos minutos y lo postee como referencia pa otros y pa mi ^^  :

Para que el Excel Source se conecte con una archivo Excel, pues usa e Proveedor Microsoft OLE DB para Jet 4.0 y el Controlador ISAM, en la red hay varios KB documentando el comportamiento de esta pareja, algunos inesperados...como es este caso...

Este problemilla se debe a una limitacion del controlador ISAM, el Controlador lee como muestra, de manera predeterminada, las 8 primeras filas para elegir el tipo de dato que se le dara a cada columna, ahora cuando la columna de excel guarda filas con diferentes tipos de datos, pues el controlador elige el tipo de datos mas usado en esa columna y devuelve valores NULL en las celdas que contengan otro tipo de datos (para el caso de haber igual cantidad de tipos de datos, el tipo numerico tiene prioridad).

 preview_query_results

Para solucionar este inconveniente, pues hay que especificar el modo de importacion, esto es agregando IMEX=1 en las propiedades extendidas de la cadena de conexion.

queryStringExcel preview_query_results2

Para modificar algunos valores predeterminados para la Importacion de Excel (como TypeGuessRows para la cantidad de filas de muestreo), se hace en esta llave :

HKEY LOCAL MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

Links de Interes :

http://technet.microsoft.com/es-es/library/ms141683.aspx
http://support.microsoft.com/kb/194124/en-us/

Bytes!

Modificar Nombre de BD

una cortita nomas :) ...para renombrar una Base de Datos en SQL Server, hay estos dos metodos (asumo que hay mas maneras, porfas si conoces una adicional comentalo)....

Usando el Store Procedure sp_renamedb, segun el MSDN Library se quitara para las siguientes versiones del SQL Server(por lo menos dice que funciona hasta SQL Server 2008), asi que si tienes unas versiones anteriores, esta disponible :

EXEC sp_renamedb 'NombreActualDB', 'NuevoNombreDB'

La otra manera ( y recomendado en el MSDN Library, tras el retiro del SP mencionado arriba)  es usar al ALTER DATABASE :

ALTER DATABASE NombreDB_ORIGINAL MODIFY NAME = NuevoNombreDB

Pdta. usando el SP necesitaras colocar el nombre entre comillas, y para el segundo sin estas.


Links de Interes :

http://msdn.microsoft.com/es-es/library/ms186217.aspx
http://msdn.microsoft.com/en-us/library/aa275464(SQL.80).aspx

Bytes!

SystemInfo.exe -> Informacion del Sistema

Hoy dia necesite por razones X saber la fecha de instalacion de mi Windows XP en mi computador, recorde el comando systeminfo, el cual te da la Informacion del Sistema y entre esos datos esta la fecha de instalacion original del windows.

image

Esto no va con el titulo del post, pero como en el momento no recordaba el nombre del comando, pues yo tenia un script vbs para ver la fecha de instalacion del windows que lo baje hace tiempo de internet asi que lo comparto :

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set objOS = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")

For Each strOS in objOS

dtmInstallDate = strOS.InstallDate
strReturn = WMIDateStringToDate(dtmInstallDate)
Wscript.Echo "Windows se instaló en esta computadora el" _
& Chr(13) & Chr(13) & " " & strReturn & Chr(13) & Chr(13) _
& "Formato: Dia/Mes/Año Horas:Minutos:Segundos"
Next

Function WMIDateStringToDate(dtmInstallDate)
WMIDateStringToDate = CDate(Mid(dtmInstallDate, 5, 2) & "/" & _
Mid(dtmInstallDate, 7, 2) & "/" & Left(dtmInstallDate, 4) _
& " " & Mid (dtmInstallDate, 9, 2) & ":" & _
Mid(dtmInstallDate, 11, 2) & ":" & Mid(dtmInstallDate, _
13, 2))
End Function





Enlaces de Interes :

http://technet.microsoft.com/en-us/library/bb491007.aspx



Bytes!

 


« code name... Jonathan »