.NET Chronicles

Temas relacionados con el desarrollo de aplicaciones con .NET

Octavio Telis

Utilidades de Sql Server con ADO.NET – Obtener información de archivos de una base de datos

Hola ¿Qué tal?…


Continuando con las utilidades de SQL Server con ADO.NET  toca el turno a una nueva funcionalidad que puede ser de gran ayuda al momento de cambiar de nombre a una base de datos de SQL Server.


Esta funcionalidad podrá ser utilizada con bases de datos de SQL Server 2005, aunque en ocasiones tendré que especificar si es posible en versiones anteriores a SQL Server 2005 ya que estaré publicando estas utilidades principalmente para funcionar en SQL Server 2005.


Consultar Información de Archivos de una Base de Datos con T-SQL


Una vez realizada la instrucción de la sección anterior, ejecutemos una consulta a las vistas de sistema para verificar el nombre lógico de los archivos de la base de datos. Comúnmente estos archivos llevan el mismo nombre de la base de datos, veamos cómo se hace esta consulta a las vistas de sistema, que en este caso será a la vista sys.database_files, esta vista nos da información acerca de los archivos de la base de datos en contexto, esto se refiere a que como es una vista de sistema, tomará la base de datos que está en el contexto de la conexión para obtener la información de los archivos. Para ver la información completa de los archivos de una base de datos, se utiliza una instrucción como la siguiente:

Use AdventureWorks
Select * From sys.database_files


Esta consulta devolverá toda la información de los archivos, tomaremos una consulta simple, o bien, compacta para consultar los archivos:

Use AdventureWorks
Select Name From sys.database_files


Estos ejemplos nos sirven para consultar los nombres de archivo, sin embargo, en una secuencia de cambio de nombre, habrá que considerar que el nombre de la base de datos ha cambiado, para lo cual la secuencia podría quedar como sigue:

ALTER DATABASE AdventureWorks MODIFY NAME = NewAdventureWorks
GO
Use NewAdventureWorks
Select Name From sys.database_files


Dado que es necesario ejecutar la instrucción ALTER DATABASE de manera independiente, deberemos utilizar la instrucción GO del analizador de consultas para que separe la ejecución de la instrucción ALTER DATABASE de la ejecución de la consulta, quedando como dos ejecuciones independientes.


Consultar Información de Archivos de una Base de Datos con ADO.NET


Realizaremos una consulta a las vistas de sistema y llenaremos un DataTable con la información para tenerla disponible. Esto nos será útil en el proceso que cambiará los nombres de los archivos de la base de datos.


Para la creación de este método utilizaré los campos file_id, type, type_desc, name y physical_name, que son los que nos dan información suficiente sobre los archivos y el tipo al que pertenecen. En el siguiente ejemplo se muestra cómo quedará el código para realizar la consulta:


VB.NET

Public Function GetDataBaseFileInfo() As DataTable
    ‘Declaramos el DataAdapter que usaremos para
    ‘llenar el DataTable
    Dim da As SqlDataAdapter
    ‘Declaramos el DataTable que se usará
    ‘para devolver el resultado
    Dim dt As DataTable = New DataTable()
    ‘Declaramos el SqlCommand que se usará
    ‘para ejecutar la consulta
    Dim cmd As SqlCommand = _
        New SqlCommand(“Select file_id,type, “ & _
                        “type_desc,name,physical_name “ & _
                        “From sys.database_files”)
    ‘Asignamos la conexión al SqlCommand
    ‘construido en la variable cmd
    cmd.Connection = cnn
    ‘Construimos el DataAdapter en la variable
    ‘da utiizando la variable cmd como parámetro
    ‘del constructor
    da = New SqlDataAdapter(cmd)
    ‘Intentaremos llenar la tabla
    Try
        ‘Se ejecuta el método fill que
        ‘llenará la tabla
        da.Fill(dt)
    Catch ex As SqlException
        ‘Capturamos los mensajes de error
        mMessages = ex.Message
    End Try
    ‘Devolvemos la variable dt previamente
    ‘construida
    Return dt
End Function


C#

public DataTable GetDataBaseFileInfo()
{
    //Declaramos el DataAdapter que usaremos para
    //llenar el DataTable
    SqlDataAdapter da;
    //Declaramos el DataTable que se usará
    //para devolver el resultado
    DataTable dt = new DataTable();
    //Declaramos el SqlCommand que se usará
    //para ejecutar la consulta
    SqlCommand cmd = new SqlCommand(“Select file_id,type,” +
        “type_desc,name,physical_name From sys.database_files”);
    //Asignamos la conexión al SqlCommand
    //construido en la variable cmd
    cmd.Connection = cnn;
    //Construimos el DataAdapter en la variable
    //da utiizando la variable cmd como parámetro
    //del constructor
    da = new SqlDataAdapter(cmd);
    //Intentaremos llenar la tabla
    try
    {
        //Se ejecuta el método fill que
        //llenará la tabla
        da.Fill(dt);
    }
    catch (SqlException ex)
    {
        //Capturamos los mensajes de error
        messages = ex.Message;
    }
    //Devolvemos la variable dt previamente
    //construida
    return dt;
}


De esta manera devolvemos de manera conveniente los resultados de la consulta en un DataTable para utilizarlo posteriormente. Cabe mencionar que no se muestra el momento en que se abre la conexión ni tampoco cuando se cierra, y esto es debido a que el método Fill del SqlDataAdapter se encargará de abrir y cerrar la conexión. Otra observación que hay que tener en cuenta es que la consulta se realizará bajo el contexto de la base de datos de la información del ConnectionString del objeto cnn.


Conclusiones


Como hemos visto hasta ahora, realizar la transformación de T-SQL a ADO.NET ha sido completamente sencillo ya que solo hemos tenido que asignar las instrucciones T-SQL al CommandText de nuestra variable de SqlCommand, seguido solo asignamos la conexión, abrimos la conexión y ejecutamos el SqlCommand. Las demás utilidades que estaré publicando, se hacen de la misma manera.


Recuerden que este método está pensado en el diseño original de la clase SqlUtilities que creamos en la primera publicación de la serie el cual está aquí:


http://msmvps.com/blogs/otelis/archive/2007/06/19/utilidades-de-sql-server-con-ado-net-regenerar-campos-identity.aspx


He decidido publicar segmentos más cortos para  mejor asimilación, este es el primer segmento de la serie que terminará en el método que automatiza el cambio de nombre de una base de datos por completo, así que estén pendientes.


Espero que haya sido de utilidad, nos vemos en el próximo post.


Saludos…

Octavio Telis

2 Responses to Utilidades de Sql Server con ADO.NET – Obtener información de archivos de una base de datos

  • Hola Octavio!

    Cuando termines la serie de Utilidades con ADO.NET, puedes empezar con la serie de utilidades con SMO :D. Y si empiezas con la aplicación que pido en este post: geeks.ms/…/23933.aspx, sería excelente!

    Saludos, nos leemos 😀

  • Es buena propuesta, sin embargo será de poco a poco ya que no estoy planeando orientarme totalmente a SQL Server 2005 (2008). Ya iré mezclando lo mismo de SQL Server – ADO.NET a utlilidades con SMO, además de que todavía estoy preparando las últimas tres entradas de las utilidades con ADO.NET.

    Gracias por el comentario.

    Saludos…

    Octavio Telis

Leave a Reply

Your email address will not be published. Required fields are marked *


*

.NET Chronicles
  • Eventos del Teclado en WPF July 22, 2015
      Hola ¿qué tal? En esta ocasión como como continuidad a lo que previamente había escrito sobre los eventos del teclado en Windows Forms, haré un artículo sobre el uso de los eventos del teclado en WPF, así es en Windows Presentation Foundation. No es desconocido por muchos que el nuevo estándar de desarrollo de […]
  • Programación Orientada a Objetos (Introducción) May 14, 2014
    Hola qué tal… Aquí les dejo este video sobre la programación orientada a objetos, a manera de preámbulo a los siguientes videos, con las bases de la programación en C# y otra línea con algunas utilerías. Saludos… Octavio Telis
  • Capítulo piloto del la versión en video de .NET Chronicles May 6, 2014
    Hola qué tal??? Pues en esta ocasión estoy compartiendo con ustedes la liga de un video piloto, con el que pretendo comunicar un poco más sobre las tecnologías .NET y los lenguajes de Programación. En esta ocasión será con la presentación de C#, en un capitulo titulado “Te presento a C#”, espero que sea de […]
  • Validación de datos de entrada con enlace a datos en WPF May 27, 2012
    Tweet Hola, qué tal. Ya que he venido hablando del enlace a datos en WPF en las publicaciones anteriores, bien convendría considerar el uso del Binding para validar datos, hemos tocado ya algunos puntos necesarios para escribir esta funcionalidad. En las publicaciones anteriores vimos ya como enlazar los datos, además, cómo convertir los datos, ahora, […]
  • Uso de la propiedad Visibility con valores booleanos en WPF May 25, 2012
    Tweet    Hola que tal. En esta ocasión quiero compartir con ustedes una manera para utilizar la propiedad Visibility con un valor bool. Te preguntarás “¿Y qué sentido tiene eso?”, bien, el detalles está en que en ocasiones se requiere que la visibilidad de un control de la interfaz de usuario responda a un valor […]
  • Conversión de Valores con Enlace a Datos May 24, 2012
    Tweet     Hola que tal. En el diseño de aplicaciones con WPF tendremos muchas ventajas en cuanto a la interfaz de usuario se refiere, dado que es un modelo muy flexible, nos permite dar formato y estilo a la apariencia de la interfaz de usuario, logrando aplicaciones más agradables, vistosas y que mejoran por mucho […]
  • Mostrar archivos de imagen en WPF utilizando enlace a datos. May 23, 2012
    Tweet Holal Qué tal. Continuando con el ejemplo del post anterior (http://bit.ly/oh0m9k), referente al manejo de imágenes en WPF, ejemplificaremos el manejo de las imágenes de la misma manera pero, esta vez, utilizando enlace a datos y la clase Binding. Antes, tenemos que hablar un poco de lo que es el enlace a datos con […]
  • Mostrar archivos de imagen en WPF August 26, 2011
    Hola Qué Tal… En esta ocasión quiero comenzar una serie de artículos sobre el manejo de archivos de imágenes con .NET. En esta primera parte voy a tratar la manera de cargar un archivo de imagen en un contenedor de imagen, en este caso usaré WPF y el control Image que viene incluido en el […]
  • Comparar dos DataTables según sus DataRows August 23, 2011
    Hola que tal. En ocasiones es necesario comparar el contenido de dos DataTable para determinar qué registros (DataRow) están en una y en otra no. Supongamos tenemos dos DataTable; dt1 y dt2, ambas con el mismo esquema. La tabla dt2 contiene más registros que la taba dt1, por lo que deseamos saber qué registros de […]
  • Arquitectura – Definición de un Data Access Component (con un ejemplo) Parte 3 May 14, 2010
    Hola Qué Tal? En esta ocasión, no he dejado pasar tanto tiempo para terminar la trilogía del uso de Data Access Component con un ejemplo. Bien, pues en este artículo veremos el uso del componente ya creado, cómo extenderemos la funcionalidad del componente y cómo lo aplicamos en la interfaz de usuario. Primeramente, debemos crear […]