Foros del Web » Programando para Internet » ASP Clásico »

Ejecutar consulta con fn_listextendedproperty de SQL SERVER desde ASP

Estas en el tema de Ejecutar consulta con fn_listextendedproperty de SQL SERVER desde ASP en el foro de ASP Clásico en Foros del Web. Buenas tardes a tod@s, ante todo disculpas si este no es el foro adecuado para plantear mi duda, espero me podáis echar un cable con ...
  #1 (permalink)  
Antiguo 05/09/2012, 10:13
Avatar de elarchivocorso  
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Ejecutar consulta con fn_listextendedproperty de SQL SERVER desde ASP

Buenas tardes a tod@s,

ante todo disculpas si este no es el foro adecuado para plantear mi duda, espero me podáis echar un cable con el siguiente tema. Me explico. Tengo un código ASP desde el cual adjunto un campo nuevo a una base de datos de SQL SERVER 2005 y, paralelamente con otra consulta agrego una descripción en las propiedades avanzadas de la misma (ms_description) de la siguiente forma:

Código para crear el campo en la bdd ya existente:

Código ASP:
Ver original
  1. set rsx= Server.CreateObject("ADODB.Connection")
  2.     sql="alter table tb_reporte add "&n_campo
  3.     Set rsx = oconn.Execute (sql)
  4.     set rsx=nothing

Código para agregar la descripción avanzada con sp_addextendedproperty:

Código ASP:
Ver original
  1. set rsx= Server.CreateObject("ADODB.Connection")
  2. sql="exec p_addextendedproperty 'ms_Description', '"&definicion&"','user','dbo','table','tb_reporte','column','"&n_campo&"'"
  3.     Set rsx = oconn.Execute (sql)
  4.     set rsx=nothing

Hasta aquí todo bién. Posteriormente realizo una consulta para visualizar tanto el campo creado como su descripción:

La consulta para recuperar el campo es:

Código ASP:
Ver original
  1. set rsx3= Server.CreateObject("ADODB.Connection")
  2.         SQL3=" SELECT [name] AS [Column name] FROM syscolumns WHERE id = (SELECT id  FROM sysobjects WHERE type = 'U' AND [NAME] = 'tb_reporte') "
  3.         Set rsx3 = oconn.Execute (sql3)

Esta sin problema, y, paralelamente ejecuto la siguiente consulta para recuperar el valor de la propiedad avanzada ms_description:

Código ASP:
Ver original
  1. set rsx= Server.CreateObject("ADODB.Connection")
  2.     sql="select value from ::fn_listextendedproperty (null,'user','dbo','TABLE','tb_reporte','COLUMN','"&n_columna&"') as p"
  3.     Set rsx = oconn.Execute (sql)
  4.     if not rsx.eof then
  5.         response.write rsx("value")
  6.     else
  7.     end if

al hacer el response.write rsx("value"), me aparecen ?????x o similares en todos los casos y no corresponden con la descripción del texto o comentario introducido en la consulta de creación.

Por otra parte, me he dado cuenta de que si ejecuto la misma consulta desde el SQL SERVER, veo dicha descripción perfectamente.


No sé si me podéis orientar un poco con este tema pero he agotado mis búsquedas por la red sin demasiado éxito la verdad.

Gracias por adelantado
  #2 (permalink)  
Antiguo 06/09/2012, 08:54
Avatar de elarchivocorso  
Fecha de Ingreso: marzo-2011
Mensajes: 5
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: Ejecutar consulta con fn_listextendedproperty de SQL SERVER desde ASP

Me respondo yo mismo.

El problema inicial es que el valor de esa propiedad se guarda en SQL como de tipo VARIANT y al visualizarla sin conversión previa aparece con los interrogantes de turno.

He encontrado una consulta que resuelve completamente mi problema para este caso y la pongo a continunación por si a alguien le pueda resultar de ayuda:

Código ASP:
Ver original
  1. select valor = CAST( (select value from fn_listextendedproperty('MS_Description', 'user', 'dbo', 'table', '"&n_tabla&"', 'column', '"&n_columna&"')) AS varchar(256) )

haciendo un response.write rs("value") se visualiza correctamente toda la información almacenada.

Saludos!!

Etiquetas: asp, red, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:05.