Buscar este blog

martes, 2 de junio de 2009

EJECUTAR BCP COMO PROCESO DESDE VB.NET 2008

Para ejecutar BCP desde codigo en VB.NET 2008, basta con escribir el siguiente codigo:


Dim objProcess As System.Diagnostics.Process = New System.Diagnostics.Process
objProcess.EnableRaisingEvents = True
objProcess.StartInfo = New System.Diagnostics.ProcessStartInfo()
objProcess.StartInfo.UseShellExecute = False
objProcess.StartInfo.RedirectStandardOutput = True
objProcess.StartInfo.RedirectStandardError = True
objProcess.StartInfo.FileName = "bcp"
objProcess.StartInfo.Arguments = "mydatabase.dbo.mytable out c:\mybackup -S mydatabaseserver -c -t"""" -r \n -T -U sa"
objProcess.Start()
objProcess.WaitForExit()
Dim s1 As String = objProcess.StandardOutput.ReadLine()
Dim s2 As String = objProcess.StandardOutput.ReadLine()
If (s2.Substring(0, 5) = "Error") Then
archivoLog.WriteLine("ERROR " & Date.Now.ToString() & " " & s1 & " " & s2)
Return False
Else
archivoLog.WriteLine("OK " & Date.Now.ToString() & " Finalizando proceso de backup de la tabla POSCuentasXCobrarCliente.")
Return True
End If


Espero que este codigo le pueda ser de utilidad a alguien, y que no tenga que esta casi un dia buscando informacion sobre esto :D

lunes, 1 de junio de 2009

IMPORTAR TABLA DE SQL EXPRESS 2005 A ARCHIVO DE TEXTO SEPARADO POR PIPES (|)

Nueva tarea asignada y tristemente fueron casi 13 horas investigando como hacer esta "dificil" :@ tarea, no soy de las personas que les agrada el no conocer una tecnologia y tomarse todo ese tiempo para saber que hacer.

Para realizar esto se necesita del comando bcp que viene como una utilidad por default al instalar el SQL Express 2005. Este proceso se realiza por completo en la consola de Windows, en este caso estoy utilizando Windows XP.

Cabe aclarar que para las versiones de SQL Express y Developer, no se puede ejecutar exitosamente este comando desde una computadora la cual no es la misma donde se encuentre la instancia del servidor donde esta la tabla de la base de datos que queremos exportar.

  1. Para iniciar abrimos la consola de Windows (Inicio -> Ejecutar -> cmd)
  2. En la consola de Windows abierta escribimos el siguiente comando:
bcp nombre_db.dbo.nombre_tabla out c:\nombre_archivo_destino.txt -S nombre_servidor -c -t"" -r \n -T -U user

Explicacion:
Primero se escribe el nombre de comando bcp.
Despues escribimos el nombre de la tabla que se desea exportar, iniciando con el nombre de la instancia de la base de datos donde se encuentra.
El texto out indica que se va a exportar la tabla.
Siguiente, se escribre el nombre del archivo destino, que es donde se guardaran los datos de la tabla.
El tag -S indica que se proveera el nombre del servidor de base de datos
El tag -c indica que se exportaran los datos de la tabla como carateres (esto lo recomiendo personalmente bastante)
El tag -t indica que se proveera del caracter para separar las columnas, en este caso el caracter sera el simbolo de pipe ()
El tag -r indica que se proveera el caracter de fin de linea, en este caso es el de fin de linea (\n)
El tag -T indica que se utilizara una trusted connection a la base de datos.
El tag -U indica que se proveera el nombre de usuario para conectar se a la base de datos.

Y listo hemos exportado la tabla seleccionada, utilizando como separador el caracter pipe ().


    Espero que esto le sea de ayuda a alguien mas, y que no tenga que pasar mas tiempo investigando por la red, el punto es hacer las cosas que alguien mas ya ha hecho lo mas rapido posible, para poder dedicar el tiempo a algo mas importante.

    viernes, 22 de mayo de 2009

    COMO ESCRIBIR LOS SIMBOLOS "MAYOR QUE" (>) Y "MENOR QUE" (<) EN HTML

    Dado que padezco de que se me olviden las cosas, y cuando se me olvidan las cosas despues tiendo a buscarlas nuevamente en internet, perdiendo de esta forma parte del tiempo, escribo este post, para poderme recordar como escribir estos simbolos en html:

    < Menor Que = &lt;

    > Mayor Que = &gt;

    PD: Por cierto... para mostrar el simbolo amperson (&) se utiliza la cadena &amp.

    CARGANDO INFORMACION DE UN ARCHIVO XML A UN DATASET

    Entre las labores del dia de hoy tenia que cargar el contenido de un archivo xml a un dataset, y pues como no tenia ni idea de como hacerlo tuve que googlear un poco, despues de probar un poco de codigo que habia encontrado al fin encontre el que me funciono.

    En este codigo lo que se hace es crear un string que contiene el path fisico del archivo xml el cual se encuentra dentro de mi mismo proyecto web. Posterior a esto declaro un nuevo DataSet y esta parte que viene ahora es la que no comentaban en la mayoria de sitios que encontre y era el crear un nuevo DataTable. Asi que se crea el nuevo DataTable se le asignan las columnas que tendra que son creadas en relacion a los campos que tiene el archivo XML, despues de esto agregamos la DataTable al DataSet, por cierto el nombre de la tabla tambien se debe escribir en funcion del archivo XML, despues utilizamos el metodo ReadXml del DataSet y despues de esto podemos ordenar el cotenido en funcion de algun campo si asi lo deseamos.

    En mi caso deseaba agregar el resultado a un DropDownList, asi que a cotinuacion dejo un ejemplo del archivo XML y el codigo que utilice en VB.NET.

    archivo.xml

    <?xml version="1.0" encoding="utf-8" ?>
    <reporte>
    <nombre_reporte>
    <id>1</id>
    <nombre>Reporte 1</nombre>
    </nombre_reporte>

    </reporte>

    archivo.aspx.vb


    Dim archivoXml As String = Server.MapPath("./Includes/XML/XMLReportNameFile.xml")
    Dim dsXmlData As DataSet = New DataSet
    Dim dtXmlTable As DataTable = New DataTable("nombre_reporte")
    dtXmlTable.Columns.Add("id", Type.GetType("System.Int32"))
    dtXmlTable.Columns.Add("nombre", Type.GetType("System.String"))
    dsXmlData.Tables.Add(dtXmlTable)
    dsXmlData.ReadXml(archivoXml, XmlReadMode.InferSchema)
    dsXmlData.Tables("nombre_reporte").DefaultView.Sort = "id"
    ddlReporte.DataSource = dsXmlData.Tables("nombre_reporte").DefaultView
    ddlReporte.DataTextField = "nombre"
    ddlReporte.DataValueField = "id"
    ddlReporte.DataBind()


    PD: Por cierto para poder utilizar la clase DataSet se debe de importar la libreria System.Data y el ddlReporte es el nombre del dropdownlist

    martes, 19 de mayo de 2009

    HACIENDO UN BACKUP Y RESTAURANDO UN SITE COLLECTION

    Despues de dar vueltas y vueltas y vueltas por la red, buscando una forma de poder sacar un backup a un site collection dentro de MOSS 2007, y buscando como restaurarlo posteriormente en otra farm, por fin encontre como hacerlo.
    Durante este proceso tambien encontre varias formas de no hacerlo, como por ejemplo:
    1. Utilizar las herramientas graficas que provee el administrador de MOSS, en donde nos permite hacer un backup de un site collection o de una web application para luego ser restaurada, pero resulto que esto solo me funciono dentro de la misma farm. Intentando hacerlo desde otra farm probe asignarle permisos a todo para que se pudiera realizar la operacion, pero siempre mostraba un error que no se tenian permisos para el archivo xml que guarda los datos de configuracion de los backups ralizados.
    2. La segunda forma fue utilizando SQL Server Express 2005, para lo cual se trataba de hacer backup a la base de datos de la web application, despues restaurar esta base de datos en el servidor de base de datos de la nueva farm, crear una nueva web application, y posterior a eso relacionar la web application con la base de datos restaurada. Resultado? tampoco funciono, no se pudo relacionar de forma correcta la web application con la base de datos restaurada.

    Despues de esto lei un poco sobre el comando stsadm que provee MOSS 2007, asi que me decidi a probarlo; y pues resulto que si funciono, lo que se debia de hacer era ejecutar el comando export del stsadm para sacar la web application y el site collection, mover el archivo generado a la nueva farm y ahi ejecutar el comando import del stsadm.

    Para ejecutar el stsadm se debe de ir a la carpeta donde se encuentra el .exe desde la consola, la cual en una instalacion estandar se encuentra en la siguiente ubicacion:

    "C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\"

    La sintaxis de los comandos para exportar e importar son las siguientes:

    Export (realiza el backup):

    stsadm -o export -url [http://nombre_del_sitio:puerto] -filename [nombre_del_archivo_de_backup]

    Import (reestablece el backup, necesita que ya exista la web application creada con un site collection creado):

    stsadm -o import -url[http://nombre_del_sitio:puerto] -filename [nombre_del_archivo_de_backup]