Skip to content

Buscar tabla/columna en una base de datos SQL Server

by en 3 mayo, 2011

Típico que muchas veces cuando empezamos a desarrollar, existe una versión primitiva de la base de datos y no hallamos la forma de encontrar lo que necesitamos para migrarlo o trabajarlo. Ya sea por nuestra falta de experiencia con la base de datos o por lo mal formada que esté. O simplemente por las dimensiones de la BD😦

La solución para encontrar la tabla o columna que estamos buscando es la siguiente:

Solo se debe dar valor a la variable @busqueda y listo, buscará en la base de datos y nos traerá las columnas y/o filas que contengan la palabra buscada y además el tipo de datos que acepta, si acepta nulls, el largo y la precisión. Buena, ¿no?

USE PERSONAL
DECLARE @busqueda AS VARCHAR(20)
SET @busqueda = 'ROL'
select
  t.name as 'Tabla',
  c.name as 'Columna',
  ti.name as 'Tipo',
  c.is_nullable as 'Acepta Nulls',
  c.max_length as 'Largo Máximo',
  ('[' + CONVERT(VARCHAR(5), c.[precision]) + ', ' + CONVERT(VARCHAR(10), c.scale) + ']')  as 'Presición'
from
  sys.tables t left join
  sys.all_columns c on (c.object_id = t.object_id) left join
  sys.types ti on (c.system_type_id = ti.system_type_id)
where
  c.name like '%' + @busqueda + '%' OR
  t.name like '%' + @busqueda + '%'
order by 'tabla'

From → SQL, T-SQL

3 comentarios
  1. Eladio Azúa permalink

    gracias pero tengo una duda, cómo puedo hacerlo para buscar en toda la base de datos y no solo en una instancia de ella? (al usar el comando USE se limita sólo a una instancia)

  2. Claro. Realiza una búsqueda en la base de datos objetivo.

    Me imagino que debe existir una estructura de sys que liste todos los objetos del servidor, incluyendo las bases de datos. Yo te recomendaría tratar de utilizar el intellisense de SSMS 2008 usando como objetivo la base de datos MASTER y hacer ensayo error (así es como descubrí esta consulta).
    Lamentablemente en estos momentos no tengo como ayudarte, pues no tengo instalado SSMS ni SQL SERVER en ninguno de los equipos que tengo a mano.

    PD:
    SSMS: SQL SERVER MANAGEMENT STUDIO

    EDIT:
    http://msdn.microsoft.com/en-us/library/ms189783.aspx
    ahí está la información que necesitas. Recuerdo haber intentado una búsqueda en master, pero no pude. A ver si tienes más suerte que yo🙂

  3. Si desea listar el esquema de la tabla:

    USE Personal
    DECLARE @busqueda AS VARCHAR(20)
    SET @busqueda = ‘ROL’
    select
    sc.name ‘Schema’,
    t.name as ‘Tabla’,
    c.name as ‘Columna’,
    ti.name as ‘Tipo’,
    c.is_nullable as ‘Acepta Nulls’,
    c.max_length as ‘Largo Máximo’,
    (‘[‘ + CONVERT(VARCHAR(5), c.[precision]) + ‘, ‘ + CONVERT(VARCHAR(10), c.scale) + ‘]’) as ‘Presición’
    from
    sys.tables t left join
    sys.all_columns c on (c.object_id = t.object_id) left join
    sys.types ti on (c.system_type_id = ti.system_type_id) left join
    sys.schemas sc on t.schema_id = sc.schema_id
    where
    c.name like ‘%’ + @busqueda + ‘%’ OR
    t.name like ‘%’ + @busqueda + ‘%’
    order by ‘tabla’

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: