Columna de ruta

31/01/2006 - 17:15 por Pablo Paredes | Informe spam
Saludos:

Bueno realizo una pagina en asp.

tengo un formulario el cual guarda datos en la bd. hay una caja de texto en
la cual coloco un nombre por ej: ARCHIVO.DOC, esto se guarda solamente como
texto. Por otro lado guardo el documento en una carpeta y el archivo con el
mismo nombre que lo guarde en texto osea ARCHIVO.DOC

Bueno el asunto es que no e encontrado algun S_P o algun codigo para enrutar
a mi documento y luego mostrarlo en una tabla en mi web como un hipervinculo,
e revisado otros post pero en concreto no resultan. poseo sql server 2000.
Porfavor algun codigo o formula concreta si conocen y muchas gracias por su
tiempo.

Preguntas similare

Leer las respuestas

#1 Maxi
31/01/2006 - 20:02 | Informe spam
Hola, esto lo debes resolver desde el lenguaje de aplicacion y no desde la
BDD


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Pablo Paredes" escribió en el
mensaje news:
Saludos:

Bueno realizo una pagina en asp.

tengo un formulario el cual guarda datos en la bd. hay una caja de texto
en
la cual coloco un nombre por ej: ARCHIVO.DOC, esto se guarda solamente
como
texto. Por otro lado guardo el documento en una carpeta y el archivo con
el
mismo nombre que lo guarde en texto osea ARCHIVO.DOC

Bueno el asunto es que no e encontrado algun S_P o algun codigo para
enrutar
a mi documento y luego mostrarlo en una tabla en mi web como un
hipervinculo,
e revisado otros post pero en concreto no resultan. poseo sql server 2000.
Porfavor algun codigo o formula concreta si conocen y muchas gracias por
su
tiempo.
Respuesta Responder a este mensaje
#2 Pablo Paredes
31/01/2006 - 20:45 | Informe spam
Osea es imposible guardar archivos en sql server por asp?, o verlo de otra
forma?

"Maxi" escribió:

Hola, esto lo debes resolver desde el lenguaje de aplicacion y no desde la
BDD


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"Pablo Paredes" escribió en el
mensaje news:
> Saludos:
>
> Bueno realizo una pagina en asp.
>
> tengo un formulario el cual guarda datos en la bd. hay una caja de texto
> en
> la cual coloco un nombre por ej: ARCHIVO.DOC, esto se guarda solamente
> como
> texto. Por otro lado guardo el documento en una carpeta y el archivo con
> el
> mismo nombre que lo guarde en texto osea ARCHIVO.DOC
>
> Bueno el asunto es que no e encontrado algun S_P o algun codigo para
> enrutar
> a mi documento y luego mostrarlo en una tabla en mi web como un
> hipervinculo,
> e revisado otros post pero en concreto no resultan. poseo sql server 2000.
> Porfavor algun codigo o formula concreta si conocen y muchas gracias por
> su
> tiempo.



Respuesta Responder a este mensaje
#3 Guillermo Roldán
31/01/2006 - 23:52 | Informe spam
Hola Pablo,

Siempre que puedas, es aconsejable guardar los documentos fuera del SQL
Server, no sólo por rendimiento. Para ello, si utilizas ASP puedes emplear
un componente de terceros como ASPupload, o bien, si utilizas ASPNet, te
vale con su propio modelo de objetos (por cierto, la hostia el ASPNet
ese...). Esto te permite desde tu formulario, especificar un fichero de tu
disco, y subirlo a una carpeta de tu webserver, para luego referenciarlo por
un hipervínculo, por ponerte un ejemplo. Yo lo hago con mis aplicaciones, y
funciona muy bien.

No obstante, si te interesa especialmente guardar un documento en las tablas
de SQL Server, esto se puede hacer. Más aún, hay productos de Microsoft como
SharePoint (tanto Portal como Team Services) que almacenan hasta las páginas
web en el propio SQL Server... así como documentos de word, etc. Tiene una
cosa muy buena, y es que con hacer el backup de SQL Server... puedes dormir
tranquilo. Como mucho, reinstalas sharepoint en otra máquina, y le dices que
se conecte a tu BBDD SQL, y lo pilla todo de ahí: páginas aspx, htm,
documentos office, pdfs, etc. Maravilloso el sharepoint ese... (sobre todo
porque la instalación de team services dura menos que un estornudo).

De cualquier modo, te anexo un trozo de código visual basic utilizando ado
para guardar un documento en sql server:

Public Sub SubirArchivo(Rs As ADODB.Recordset, ByVal strRutaArchivo As
String)
Dim Stm As ADODB.Stream
Set Stm = New ADODB.Stream
With Stm
.Type = adTypeBinary
.Open
.LoadFromFile strRutaArchivo
Rs.AddNew
Rs.Fields("NombreCampoBLOB").Value = .Read
Rs.Update
.Close
End With
Set Stm = Nothing
End Sub

Espero que con esto, y un poquito de Google, puedas solucionar tu problema.

Saludos,
Guillermo Roldán

"Pablo Paredes" escribió en el
mensaje news:
Saludos:

Bueno realizo una pagina en asp.

tengo un formulario el cual guarda datos en la bd. hay una caja de texto


en
la cual coloco un nombre por ej: ARCHIVO.DOC, esto se guarda solamente


como
texto. Por otro lado guardo el documento en una carpeta y el archivo con


el
mismo nombre que lo guarde en texto osea ARCHIVO.DOC

Bueno el asunto es que no e encontrado algun S_P o algun codigo para


enrutar
a mi documento y luego mostrarlo en una tabla en mi web como un


hipervinculo,
e revisado otros post pero en concreto no resultan. poseo sql server 2000.
Porfavor algun codigo o formula concreta si conocen y muchas gracias por


su
tiempo.
Respuesta Responder a este mensaje
#4 Maxi [MVP]
01/02/2006 - 01:42 | Informe spam
Hola Guille,

Siempre que puedas, es aconsejable guardar los documentos fuera del SQL
Server, no sólo por rendimiento



Esto no lo comparto, en que te basas en decir que hay problemas de
rendimiento? y ademas que otros problemas mas le ves?


Salu2
-
[MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Guillermo Roldán" escribió en el
mensaje news:
Hola Pablo,

Siempre que puedas, es aconsejable guardar los documentos fuera del SQL
Server, no sólo por rendimiento. Para ello, si utilizas ASP puedes emplear
un componente de terceros como ASPupload, o bien, si utilizas ASPNet, te
vale con su propio modelo de objetos (por cierto, la hostia el ASPNet
ese...). Esto te permite desde tu formulario, especificar un fichero de tu
disco, y subirlo a una carpeta de tu webserver, para luego referenciarlo
por
un hipervínculo, por ponerte un ejemplo. Yo lo hago con mis aplicaciones,
y
funciona muy bien.

No obstante, si te interesa especialmente guardar un documento en las
tablas
de SQL Server, esto se puede hacer. Más aún, hay productos de Microsoft
como
SharePoint (tanto Portal como Team Services) que almacenan hasta las
páginas
web en el propio SQL Server... así como documentos de word, etc. Tiene una
cosa muy buena, y es que con hacer el backup de SQL Server... puedes
dormir
tranquilo. Como mucho, reinstalas sharepoint en otra máquina, y le dices
que
se conecte a tu BBDD SQL, y lo pilla todo de ahí: páginas aspx, htm,
documentos office, pdfs, etc. Maravilloso el sharepoint ese... (sobre todo
porque la instalación de team services dura menos que un estornudo).

De cualquier modo, te anexo un trozo de código visual basic utilizando ado
para guardar un documento en sql server:

Public Sub SubirArchivo(Rs As ADODB.Recordset, ByVal strRutaArchivo As
String)
Dim Stm As ADODB.Stream
Set Stm = New ADODB.Stream
With Stm
.Type = adTypeBinary
.Open
.LoadFromFile strRutaArchivo
Rs.AddNew
Rs.Fields("NombreCampoBLOB").Value = .Read
Rs.Update
.Close
End With
Set Stm = Nothing
End Sub

Espero que con esto, y un poquito de Google, puedas solucionar tu
problema.

Saludos,
Guillermo Roldán

"Pablo Paredes" escribió en el
mensaje news:
Saludos:

Bueno realizo una pagina en asp.

tengo un formulario el cual guarda datos en la bd. hay una caja de texto


en
la cual coloco un nombre por ej: ARCHIVO.DOC, esto se guarda solamente


como
texto. Por otro lado guardo el documento en una carpeta y el archivo con


el
mismo nombre que lo guarde en texto osea ARCHIVO.DOC

Bueno el asunto es que no e encontrado algun S_P o algun codigo para


enrutar
a mi documento y luego mostrarlo en una tabla en mi web como un


hipervinculo,
e revisado otros post pero en concreto no resultan. poseo sql server
2000.
Porfavor algun codigo o formula concreta si conocen y muchas gracias por


su
tiempo.




Respuesta Responder a este mensaje
#5 Guillermo Roldán
01/02/2006 - 07:07 | Informe spam
En una ocasión, me encontré con una tabla que utilizaba un campo text en vez
de un campo varchar. Esto era debido a una migración de una base de datos
Access, y claro, como en Access sólo puedes guardar hasta 255 caracteres,
pues si quieres más tienes los famosos campos "Memos", que al final, al
pasarlos a SQL Server en vez de pasarse como varchar(2000) por ejemplo, se
pasan como campos text... aunque el más grande (len(campo)) no supere los
1000 caracteres.

Con 10 registros no se nota. Con 10.000 tampoco. Pero cuando empezamos a
hablar de varios cientos de miles o de algunos millones, teniendo en cuenta
que no todas las aplicaciones están indexadas correctamente (en ocasiones,
algo que como DBAs no podemos cambiar por ser aplicaciones de terceros, o de
un departamento un poco más chic de la misma empresa), se nota la diferencia
en el rendimiento, y es que los campos grandes se almacenan fuera de las
páginas de datos de la propia tabla como tal.

En su día, me encontré con esto en un cliente, y se notó el rendimiento al
cambiar de text a varchar, creeme. Creo que era una tabla con cinco millones
de registros, más o menos.

Por otro lado, en el cliente en el que estoy ahora, tienen una aplicación de
gestión documental, que almacena la entrada de todos los documentos. En
consecuencia, tenemos 52 servidores SQL Server, más o menos, uno en cada
provincia de España, cada uno de los cuales almacena en su motor documentos
TIF y además datos. Esto da algunos pequeños problemas, como:
- Las copias del Log diarias, aún haciéndolas cada tres horas, se llegan a
solapar !!
- El volumen de datos de cada provincia sólo para esta aplicación (que
lleva poco tiempo) son 5GB, cuando sino, hablaríamos de una pequeña base de
datos de 200 ó 300 MB como mucho, que te funcionaría bien incluso con MSDE,
y que resulta mucho más manejable (ej: tiempo de un backup Full y de un
restore).
- Los más cojonudo, es que los programadores son unos hachas: Además de
cargar las imágenes en SQL Server las guardan en el propio sistema de
archivos del servidor... ¿?¿? Al principio me resultó un poco traumático,
pero luego uno se acostumbra... ;-)
- Los programadores se están encontrando con problemas de tiempos de
respuesta y bloqueos. No voy a discutir que si programación se podría
mejorar (no utilizan procedimientos almacenados y la indexación se podría
optimizar, por poner dos ejemplo triviales), pero los problemas que tienen,
si estuvieran jugando con las imágenes fuera de SQL Server, nos les habría
ocurrido.

Yo personalmente también le encuentro ventajas a almacenar documentos en la
base de datos, pero prefiero a consejar que en principio no se haga, salvo
que se tengan las cosas muy claras... como la seguridad, primero cierra
todos los puertos, y luego ver abriendo los puertos que realmente hagan
falta.

En una aplicación de comercio electrónico que tengo, por dar un ejemplo,
cada Artículo tiene una foto (o ninguna o varios, vamos). La foto, la subo
con un upload desde aspnet, y la guardo en el servidor en una carpeta del
IIS. Va muy bien, y la base de datos es muy rápida. Sin embargo, cuando
quiero mover un artículo de una Familia o de un Catálogo a otro, me
encuentro que cambia la ruta o el nombre del fichero imagen en el servidor,
lo que me genera trabajo extra: desarrollar los procedimientos de la base de
datos, y las clases .Net que muevan los ficheros. Es decir, hay que
gestionar el alta, actualización y eliminación de los ficheros además de en
la Base de Datos, y esto es más laborioso. Sin embargo, la base de datos va
como un tiro, el registro de transacciones no sufre cuando hay cargas
masivas, y es muy ligera. En esta aplicación, también hay triggers de
auditoría / control de cambios, lo cual me supone que cada vez que cambia el
precio de un artículo (hay actualizaciones diarias de miles de artículos),
saltan los triggers de auditoría, los cuales los tendría que modificar para
que no me dupliquen el campo documento "por que sí" pues esto inflaría la
base de datos de mala manera. Algo solventable, pero a fin de cuentas, hay q
ue "ir sumando" ventajas e inconvenientes antes de declinarse por una opción
u otra.

Como todo en esta vida, hay que buscar un equilibrio, pero siendo egoista,
para la base de datos siempre será mejor que lo guardemos fuera... aunque en
ocasiones, por las circunstancias lo guardemos dentro (el ejemplo de
Sharepoint es muy bueno, en este caso).

Esto son cosas que me han ocurrido, y me dan pie a pensar así, pero simpre
está bien conocer el punto de vista y los escenarios de los demás, está
claro.

En fin, saludos, que tengo que salir al curro "raudo y veloz"
Guille

"Maxi [MVP]" escribió en el mensaje
news:
Hola Guille,

> Siempre que puedas, es aconsejable guardar los documentos fuera del SQL
> Server, no sólo por rendimiento

Esto no lo comparto, en que te basas en decir que hay problemas de
rendimiento? y ademas que otros problemas mas le ves?


Salu2
-
[MVP] SQL Server
Orador para Culminis Latam
www.sqlgurus.org

MSN:

"Guillermo Roldán" escribió en el
mensaje news:
> Hola Pablo,
>
> Siempre que puedas, es aconsejable guardar los documentos fuera del SQL
> Server, no sólo por rendimiento. Para ello, si utilizas ASP puedes


emplear
> un componente de terceros como ASPupload, o bien, si utilizas ASPNet, te
> vale con su propio modelo de objetos (por cierto, la hostia el ASPNet
> ese...). Esto te permite desde tu formulario, especificar un fichero de


tu
> disco, y subirlo a una carpeta de tu webserver, para luego referenciarlo
> por
> un hipervínculo, por ponerte un ejemplo. Yo lo hago con mis


aplicaciones,
> y
> funciona muy bien.
>
> No obstante, si te interesa especialmente guardar un documento en las
> tablas
> de SQL Server, esto se puede hacer. Más aún, hay productos de Microsoft
> como
> SharePoint (tanto Portal como Team Services) que almacenan hasta las
> páginas
> web en el propio SQL Server... así como documentos de word, etc. Tiene


una
> cosa muy buena, y es que con hacer el backup de SQL Server... puedes
> dormir
> tranquilo. Como mucho, reinstalas sharepoint en otra máquina, y le dices
> que
> se conecte a tu BBDD SQL, y lo pilla todo de ahí: páginas aspx, htm,
> documentos office, pdfs, etc. Maravilloso el sharepoint ese... (sobre


todo
> porque la instalación de team services dura menos que un estornudo).
>
> De cualquier modo, te anexo un trozo de código visual basic utilizando


ado
> para guardar un documento en sql server:
>
> Public Sub SubirArchivo(Rs As ADODB.Recordset, ByVal strRutaArchivo As
> String)
> Dim Stm As ADODB.Stream
> Set Stm = New ADODB.Stream
> With Stm
> .Type = adTypeBinary
> .Open
> .LoadFromFile strRutaArchivo
> Rs.AddNew
> Rs.Fields("NombreCampoBLOB").Value = .Read
> Rs.Update
> .Close
> End With
> Set Stm = Nothing
> End Sub
>
> Espero que con esto, y un poquito de Google, puedas solucionar tu
> problema.
>
> Saludos,
> Guillermo Roldán
>
> "Pablo Paredes" escribió en el
> mensaje news:
>> Saludos:
>>
>> Bueno realizo una pagina en asp.
>>
>> tengo un formulario el cual guarda datos en la bd. hay una caja de


texto
> en
>> la cual coloco un nombre por ej: ARCHIVO.DOC, esto se guarda solamente
> como
>> texto. Por otro lado guardo el documento en una carpeta y el archivo


con
> el
>> mismo nombre que lo guarde en texto osea ARCHIVO.DOC
>>
>> Bueno el asunto es que no e encontrado algun S_P o algun codigo para
> enrutar
>> a mi documento y luego mostrarlo en una tabla en mi web como un
> hipervinculo,
>> e revisado otros post pero en concreto no resultan. poseo sql server
>> 2000.
>> Porfavor algun codigo o formula concreta si conocen y muchas gracias


por
> su
>> tiempo.
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida