SELECT objname, CONVERT(VARCHAR(500), value)
FROM ::FN_LISTEXTENDEDPROPERTY(N'MS_DESCRIPTION', N'USER', N'DBO', N'TABLE', NULL, NULL, NULL)
where objtype = 'TABLE'
Listar comentarios de los campos de una tabla
select
st.name [Table],
sc.name [Column],
sep.value [Description]
from sys.tables st
inner join sys.columns sc on st.object_id = sc.object_id
left join sys.extended_properties sep on st.object_id = sep.major_id
and sc.column_id = sep.minor_id
and sep.name = 'MS_Description'
where st.name = 'Nombre de la Tabla'
and sc.name = 'Nombre del campo'
Con stored procedures...
//crea o actualiza la propiedad MS_description, de la tabla especificada
exec mer_ActualizarDescripcionTabla 'Cliente', 'tabla de clientes de la empresa'-
//actualiza o crea la propiedad especificada, para el campo de la tabla especifcadas, y le pone el valor indicado
exec mer_ActualizarPropiedadCampo 'Tipo', 'Cliente', 'Nombre', 'Nombre del cliente'
//elimina la propiedad MS_description, de la tabla especificada
exec mer_EliminarDescripcionTabla 'Cliente'
//elimina la propiedad que tenga el nombre especificado, del campo de la tabla especificados
exec mer_EliminarPropiedadCampo 'Tipo', 'Cliente', 'Nombre'
//lista los comentarios de todas las tablas
exec mer_listarComentariosTablas
//lista todas las propiedades del tipo especificado, de todos los campos de todas las tablas
exec mer_listarPropiedadesCampos 'Tipo'
//lista el valor de una propiedad dada de un campo de una tabla.
exec mer_listarPropiedadCampo 'Tipo', 'Cliente', 'FechaNacimiento'
Stored procedures
--Comienzo de SPs -------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[mer_ActualizarDescripcionTabla]
-- Los parámetros son el nombre de la tabla y la descripción
@nombre_tabla sysname = '',
@descripcion_tabla sql_variant = ''
AS
BEGIN
BEGIN TRY
IF EXISTS (SELECT OBJNAME AS 'tabla', VALUE AS 'COMENTARIO'
FROM ::FN_LISTEXTENDEDPROPERTY(N'MS_DESCRIPTION', N'USER', N'DBO', N'TABLE',
@nombre_tabla, NULL, NULL) XP
WHERE XP.NAME IN (N'MS_DESCRIPTION'))
EXEC sys.sp_updateextendedproperty
@name=N'MS_Description',
@value=@descripcion_tabla,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla
ELSE
EXEC sys.sp_addextendedproperty
@name=N'MS_Description',
@value=@descripcion_tabla,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
PRINT 'No se pudo agregar la descripción ''' + convert(nvarchar(128),@descripcion_tabla) + '''a la tabla ' + convert(nvarchar(128),@nombre_tabla)
PRINT 'Error Line: ' + convert(varchar(50),ERROR_LINE())
PRINT 'ErrorMessage: ' + ERROR_MESSAGE()
ROLLBACK TRANSACTION
END CATCH
END
-------------------------------------------------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[mer_ActualizarPropiedadCampo]
-- Los parámetros son el nombre de la tabla, el nombre de la columna y la descripción
@propiedad sysname = '',
@nombre_tabla sysname = '',
@nombre_campo sysname = '',
@descripcion_campo sql_variant = ''
AS
BEGIN TRY
IF EXISTS(SELECT objname, value
FROM fn_listextendedproperty (@propiedad, N'schema', 'dbo',
N'table', @nombre_tabla, N'column', null) WHERE objname = @nombre_campo)
EXEC sys.sp_updateextendedproperty
@name=@propiedad,
@value=@descripcion_campo,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla,
@level2type=N'COLUMN',
@level2name=@nombre_campo
ELSE
EXEC sys.sp_addextendedproperty
@name=@propiedad,
@value=@descripcion_campo,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla,
@level2type=N'COLUMN',
@level2name=@nombre_campo
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
PRINT 'No se pudo agregar la descripción ''' + convert(nvarchar(128),@descripcion_campo) + '''al campo ' + convert(nvarchar(128),@nombre_campo) + ' en la tabla ' + convert(nvarchar(128),@nombre_tabla)
PRINT 'Error Line: ' + convert(varchar(50),ERROR_LINE())
PRINT 'ErrorMessage: ' + ERROR_MESSAGE()
ROLLBACK TRANSACTION
END CATCH
-------------------------------------------------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[mer_EliminarDescripcionTabla]
@nombre_tabla sysname = ''
AS
BEGIN TRY
EXEC sys.sp_dropextendedproperty
@name=N'MS_Description',
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
PRINT 'No se pudo agregar la descripción ''' + '''al campo ' + ' en la tabla ' + convert(nvarchar(128),@nombre_tabla)
PRINT 'Error Line: ' + convert(varchar(50),ERROR_LINE())
PRINT 'ErrorMessage: ' + ERROR_MESSAGE()
ROLLBACK TRANSACTION
END CATCH
-------------------------------------------------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[mer_EliminarPropiedadCampo]
@propiedad sysname = '',
@nombre_tabla sysname = '',
@nombre_campo sysname = ''
AS
BEGIN TRY
EXEC sys.sp_dropextendedproperty
@name=@propiedad,
@level0type=N'SCHEMA',
@level0name=N'dbo',
@level1type=N'TABLE',
@level1name=@nombre_tabla,
@level2type=N'COLUMN',
@level2name=@nombre_campo
END TRY
BEGIN CATCH
SELECT
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;
PRINT 'No se pudo agregar la descripción ''' + '''al campo ' + convert(nvarchar(128),@nombre_campo) + ' en la tabla ' + convert(nvarchar(128),@nombre_tabla)
PRINT 'Error Line: ' + convert(varchar(50),ERROR_LINE())
PRINT 'ErrorMessage: ' + ERROR_MESSAGE()
ROLLBACK TRANSACTION
END CATCH
-------------------------------------------------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[mer_ListarComentariosTablas]
AS
DECLARE @comentarios TABLE(tabla sysname, descripcion VARCHAR(500))
INSERT INTO @comentarios (tabla, descripcion)
SELECT objname, CONVERT(VARCHAR(500), value)
FROM ::FN_LISTEXTENDEDPROPERTY(N'MS_DESCRIPTION', N'USER', N'DBO', N'TABLE', NULL, NULL, NULL)
INSERT INTO @comentarios (tabla)
SELECT table_name
FROM information_schema.tables
WHERE table_name NOT IN
(select tabla FROM @comentarios)
AND TABLE_TYPE <> 'VIEW'
SELECT * from @comentarios ORDER BY tabla
-------------------------------------------------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[mer_ListarPropiedadesCampos]
@propiedad sysname = ''
AS
DECLARE @propiedades TABLE (
esquema sysname,
tabla sysname,
columna sysname,
valor VARCHAR(500))
DECLARE c CURSOR FOR
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_type != 'VIEW'
DECLARE @s sysname, @t sysname
OPEN c
FETCH c INTO @s, @t
WHILE @@FETCH_STATUS = 0 BEGIN
INSERT INTO @propiedades (esquema, tabla, columna, valor)
SELECT @s, @t, objname, convert(varchar(500), value)
FROM fn_listextendedproperty (@propiedad, N'schema', @s, N'table', @t, N'column', null);
FETCH c INTO @s, @t
END
CLOSE c
DEALLOCATE c
INSERT INTO @propiedades (esquema, tabla, columna)
SELECT table_schema, table_name, column_name
FROM information_schema.columns s
WHERE table_name IN
(SELECT table_name
FROM information_schema.tables
where TABLE_TYPE <> 'VIEW')
AND NOT EXISTS
(SELECT *
FROM @propiedades c
WHERE s.table_schema = c.esquema
AND s.table_name = c.tabla
AND s.column_name = c.columna)
SELECT *
FROM @propiedades
ORDER BY esquema, tabla, columna
-------------------------------------------------------------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[mer_ListarPropiedadCampo]
@propiedad sysname = '',
@tabla sysname = '',
@campo sysname = ''
AS
DECLARE @propiedades TABLE (
esquema sysname,
tabla sysname,
columna sysname,
valor VARCHAR(500))
DECLARE c CURSOR FOR
SELECT table_schema, table_name
FROM information_schema.tables
WHERE table_type != 'VIEW' and
table_name = @tabla
DECLARE @s sysname, @t sysname
OPEN c
FETCH c INTO @s, @t
WHILE @@FETCH_STATUS = 0 BEGIN
INSERT INTO @propiedades (esquema, tabla, columna, valor)
SELECT @s, @t, objname, convert(varchar(500), value)
FROM fn_listextendedproperty (@propiedad, N'schema', @s, N'table', @tabla, N'column', @campo);
FETCH c INTO @s, @t
END
CLOSE c
DEALLOCATE c
select *
from @propiedades
No hay comentarios:
Publicar un comentario