Vistas parametrizadas en función del usuario que se conecta desde ASP

26/02/2004 - 20:40 por isaac | Informe spam
No soy experto en SQL Server 2000 y necesito algo de ayuda.

Estoy diseñando una base de datos que me gustaría que fuera común para
multiples clientes que tengo. Ellos atacarán a la BD a través de un
backoffice montado en ASP. Cada cliente tiene sus datos personales y no
tiene que ver los de otros clientes. El backoffice programado en ASP es el
mismo para todos.

Necesito saber si es posible establecer algún filtro de tal modo que las
consultas que realice el ASP filtre determinadas filas en función del
usuario que ha establecido la conexión con la base de datos. De este modo
podría utilizar la misma base de datos y la misma programación ASP para cada
uno de mis clientes. Se que puedo realizar Vistas para restringir
determinadas filas. A esa vista pueden tener acceso determinados usuarios,
sin embargo creo que no me vale puesto que cada vista tendría un nombre
distinto y en la programación ASP tendría que cambiar todas las consultas
para cada cliente.

Lo ideal sería que la única diferencia en los ASP de cada cliente sea el
usuario que se conecta a la base de datos y en función del usuario que se
conecta para parámetros a una especie de vístas parametrizadas.

¿Qué posibles soluciones hay? Por favor, que alguien me de alguna pista para
ir leyendo en los Libros en Pantalla porque por más que busco no acabo de
dar con la mejor solución.

Gracias por vuestra atención.

Preguntas similare

Leer las respuestas

#1 Maximiliano D. A.
26/02/2004 - 20:59 | Informe spam
Hola!! te entiendo a la perfecccion, veamos algunas alternativas

1) Armas Stores procedures y como entrada pones el Id de Usuario con lo cual
la cosa se resolveria bastante
2) Usas una vista para cada conexion de usuario, o sea que cada usuario sera
un propietario mas o menos asi
user1.clientes
user2.clientes

UserN.Clientes N

Lo mas parecido a una vista parametrizada son las UDF (Funciones def del
Usuario), revisa en el manual como hacerlo.

Yo me inclino por ma opcion 1, es la que mas me gusta en lo personal pero
cada cual te dara otras opciones quizas mas interesantes que las mias.

Bye




Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"isaac" escribió en el mensaje
news:c1li10$i7b$
No soy experto en SQL Server 2000 y necesito algo de ayuda.

Estoy diseñando una base de datos que me gustaría que fuera común para
multiples clientes que tengo. Ellos atacarán a la BD a través de un
backoffice montado en ASP. Cada cliente tiene sus datos personales y no
tiene que ver los de otros clientes. El backoffice programado en ASP es el
mismo para todos.

Necesito saber si es posible establecer algún filtro de tal modo que las
consultas que realice el ASP filtre determinadas filas en función del
usuario que ha establecido la conexión con la base de datos. De este modo
podría utilizar la misma base de datos y la misma programación ASP para


cada
uno de mis clientes. Se que puedo realizar Vistas para restringir
determinadas filas. A esa vista pueden tener acceso determinados usuarios,
sin embargo creo que no me vale puesto que cada vista tendría un nombre
distinto y en la programación ASP tendría que cambiar todas las consultas
para cada cliente.

Lo ideal sería que la única diferencia en los ASP de cada cliente sea el
usuario que se conecta a la base de datos y en función del usuario que se
conecta para parámetros a una especie de vístas parametrizadas.

¿Qué posibles soluciones hay? Por favor, que alguien me de alguna pista


para
ir leyendo en los Libros en Pantalla porque por más que busco no acabo de
dar con la mejor solución.

Gracias por vuestra atención.







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 20/02/2004
Respuesta Responder a este mensaje
#2 ulises
26/02/2004 - 21:46 | Informe spam
Me parece que eso pasa por el diseño de la base de datos,
si consideras que debe establecerse diferencia a nivel
usuario, el código del usuario debe formar parte de la
clave en la definición de las tablas, dado ello sería
fácil hacer consultas pasando como parámetro el código de
usuario.

Saludos,
Ulises

No soy experto en SQL Server 2000 y necesito algo de


ayuda.

Estoy diseñando una base de datos que me gustaría que


fuera común para
multiples clientes que tengo. Ellos atacarán a la BD a


través de un
backoffice montado en ASP. Cada cliente tiene sus datos


personales y no
tiene que ver los de otros clientes. El backoffice


programado en ASP es el
mismo para todos.

Necesito saber si es posible establecer algún filtro de


tal modo que las
consultas que realice el ASP filtre determinadas filas en


función del
usuario que ha establecido la conexión con la base de


datos. De este modo
podría utilizar la misma base de datos y la misma


programación ASP para cada
uno de mis clientes. Se que puedo realizar Vistas para


restringir
determinadas filas. A esa vista pueden tener acceso


determinados usuarios,
sin embargo creo que no me vale puesto que cada vista


tendría un nombre
distinto y en la programación ASP tendría que cambiar


todas las consultas
para cada cliente.

Lo ideal sería que la única diferencia en los ASP de cada


cliente sea el
usuario que se conecta a la base de datos y en función


del usuario que se
conecta para parámetros a una especie de vístas


parametrizadas.

¿Qué posibles soluciones hay? Por favor, que alguien me


de alguna pista para
ir leyendo en los Libros en Pantalla porque por más que


busco no acabo de
dar con la mejor solución.

Gracias por vuestra atención.


.

Respuesta Responder a este mensaje
#3 Javier Loria
27/02/2004 - 01:34 | Informe spam
Hola:
Si asumimos que cada "instancia" de la aplicacion tiene diferentes
usuarios (o sea que cada cliente tiene su propio usuario de Windows o SQL),
puedes:
a) Crear una Tabla que tenga los "usuarios"
=CREATE TABLE Usuarios(
CodigoUsuario <Tipo>
NOT NULL UNIQUE
CuentaWindows VARCHAR(40) --Dominio(15)\ Usuario(21)
NOT NULL PRIMARY KEY
)
El Codigo de Usuario seria un codigo que asignas en tu aplicacion para
los usuarios, puede ser un numero entero, o puede ser un CHAR o VARCHAR que
tenga sentido para tu aplicacion y que va a existir como columna en las
tablas de la aplicacion.
b) En todas las Tablas que tengan informacion de los usuarios agregas un
columna CodigoUsuario, que forma parte de la Llave Primaria y es la primera
columna del Clustered Index. Estas columnas tiene un DEFAULT SYSTEM_USER
c) Creas Vistas (una para cada tabla que tenga informacion diferente para
cada usuario) con el siguiente patron:
= CREATE VIEW MiVista
AS
SELECT <Columnas de la Tabla, SIN INCLUIR CodigoUsuario>
FROM Tabla
JOIN Usuarios
ON Tabla.CodigoUsuario=Usuarios.CodigoUsuario
WHERE Usuarios.CuentaWindows=SYSTEM_USER
WITH CHECK OPTION
=d) Nunca usas las tabla solo las vistas.

Si cada aplicacion tiene multiples usuarios debes agregar una Tabla mas para
las aplicaciones, relacionar Usuarios, con Aplicaciones con Tablas
funcionales.
Este patron tiene la ventaja de hacer transparente la seguridad para la
parte funcional de la aplicacion.
Espero haberme explicado,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.



isaac escribio:
No soy experto en SQL Server 2000 y necesito algo de ayuda.

Estoy diseñando una base de datos que me gustaría que fuera común para
multiples clientes que tengo. Ellos atacarán a la BD a través de un
backoffice montado en ASP. Cada cliente tiene sus datos personales y
no tiene que ver los de otros clientes. El backoffice programado en
ASP es el mismo para todos.

Necesito saber si es posible establecer algún filtro de tal modo que
las consultas que realice el ASP filtre determinadas filas en función
del usuario que ha establecido la conexión con la base de datos. De
este modo podría utilizar la misma base de datos y la misma
programación ASP para cada uno de mis clientes. Se que puedo realizar
Vistas para restringir determinadas filas. A esa vista pueden tener
acceso determinados usuarios, sin embargo creo que no me vale puesto
que cada vista tendría un nombre distinto y en la programación ASP
tendría que cambiar todas las consultas para cada cliente.

Lo ideal sería que la única diferencia en los ASP de cada cliente sea
el usuario que se conecta a la base de datos y en función del usuario
que se conecta para parámetros a una especie de vístas parametrizadas.

¿Qué posibles soluciones hay? Por favor, que alguien me de alguna
pista para ir leyendo en los Libros en Pantalla porque por más que
busco no acabo de dar con la mejor solución.

Gracias por vuestra atención.
Respuesta Responder a este mensaje
#4 isaac
27/02/2004 - 13:11 | Informe spam
Hola Maxi.

La solución que busco tendría que ser bastante transparente de tal modo que
el programador de ASP que hasta ahora ha trabajado con Access lo siga
haciendo del mismo modo. Con esto me refiero a que las consultas SELECT las
seguirá montando en su script de ASP. Entiendo que un procedimiento
almacenado da unos resultados sobre los que mi programador no puede montar
una consulta SELECT.

Las vistas son una solución perfecta pero por lo poco que se cada vista
tendría que tener un nombre distinto y eso provocaría tener que cambiar
todas las SELECT desperdigadas en los ASP que gestionan el backoffice.

¿Pueden existir vistas con el mismo nombre y que por ejemplo tengan distinto
propietario? Si esto es posible supongo que esto sería una solución perfecta
puesto que el propietario creo que se indica en el momento de realizar la
conexión en ASP.

Hay conceptos básicos que no acabo de tener claros en lo que se refiere a la
organización de la seguridad. Tengo un poco de jaleo entre inicio de sesion,
usuarios y propietarios por lo tanto igual estoy diciendo alguna burrada.

Un saludo.



Isaac Marco Blancas
Deo Volente S.L. Multimedia Productions
www.deovolente.es
Tel: +34-91-5300732 Fax: +34-91-4680369

-
www.monumentalia.net ¡¡¡ EL MEJOR PORTAL DE MONUMENTOS !!!


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:%23Ktk6NK$
Hola!! te entiendo a la perfecccion, veamos algunas alternativas

1) Armas Stores procedures y como entrada pones el Id de Usuario con lo


cual
la cosa se resolveria bastante
2) Usas una vista para cada conexion de usuario, o sea que cada usuario


sera
un propietario mas o menos asi
user1.clientes
user2.clientes

UserN.Clientes N

Lo mas parecido a una vista parametrizada son las UDF (Funciones def del
Usuario), revisa en el manual como hacerlo.

Yo me inclino por ma opcion 1, es la que mas me gusta en lo personal pero
cada cual te dara otras opciones quizas mas interesantes que las mias.

Bye




Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"isaac" escribió en el mensaje
news:c1li10$i7b$
> No soy experto en SQL Server 2000 y necesito algo de ayuda.
>
> Estoy diseñando una base de datos que me gustaría que fuera común para
> multiples clientes que tengo. Ellos atacarán a la BD a través de un
> backoffice montado en ASP. Cada cliente tiene sus datos personales y no
> tiene que ver los de otros clientes. El backoffice programado en ASP es


el
> mismo para todos.
>
> Necesito saber si es posible establecer algún filtro de tal modo que las
> consultas que realice el ASP filtre determinadas filas en función del
> usuario que ha establecido la conexión con la base de datos. De este


modo
> podría utilizar la misma base de datos y la misma programación ASP para
cada
> uno de mis clientes. Se que puedo realizar Vistas para restringir
> determinadas filas. A esa vista pueden tener acceso determinados


usuarios,
> sin embargo creo que no me vale puesto que cada vista tendría un nombre
> distinto y en la programación ASP tendría que cambiar todas las


consultas
> para cada cliente.
>
> Lo ideal sería que la única diferencia en los ASP de cada cliente sea el
> usuario que se conecta a la base de datos y en función del usuario que


se
> conecta para parámetros a una especie de vístas parametrizadas.
>
> ¿Qué posibles soluciones hay? Por favor, que alguien me de alguna pista
para
> ir leyendo en los Libros en Pantalla porque por más que busco no acabo


de
> dar con la mejor solución.
>
> Gracias por vuestra atención.
>
>



Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 20/02/2004


Respuesta Responder a este mensaje
#5 Maximiliano D. A.
27/02/2004 - 13:30 | Informe spam
Si isac lo que yo te decia era justamente tener vistas con distintos
propietarios ;-), es una forma nomas

vos pensa que los objetos de Sql primero esta el propietario y luego el
nombre del objeto

Bye


Salu2
Maxi
Buenos Aires Argentina
Desarrollador Microsoft 3 Estrellas .NET
[Maxi_accotto[arroba]speedy[punto]com[punto]ar
MSN:


"isaac" escribió en el mensaje
news:c1nc3d$5ri$
Hola Maxi.

La solución que busco tendría que ser bastante transparente de tal modo


que
el programador de ASP que hasta ahora ha trabajado con Access lo siga
haciendo del mismo modo. Con esto me refiero a que las consultas SELECT


las
seguirá montando en su script de ASP. Entiendo que un procedimiento
almacenado da unos resultados sobre los que mi programador no puede montar
una consulta SELECT.

Las vistas son una solución perfecta pero por lo poco que se cada vista
tendría que tener un nombre distinto y eso provocaría tener que cambiar
todas las SELECT desperdigadas en los ASP que gestionan el backoffice.

¿Pueden existir vistas con el mismo nombre y que por ejemplo tengan


distinto
propietario? Si esto es posible supongo que esto sería una solución


perfecta
puesto que el propietario creo que se indica en el momento de realizar la
conexión en ASP.

Hay conceptos básicos que no acabo de tener claros en lo que se refiere a


la
organización de la seguridad. Tengo un poco de jaleo entre inicio de


sesion,
usuarios y propietarios por lo tanto igual estoy diciendo alguna burrada.

Un saludo.



Isaac Marco Blancas
Deo Volente S.L. Multimedia Productions
www.deovolente.es
Tel: +34-91-5300732 Fax: +34-91-4680369

-
www.monumentalia.net ¡¡¡ EL MEJOR PORTAL DE MONUMENTOS !!!


"Maximiliano D. A." <maxi_accotto[arroba]speedy[.]com[.]ar> escribió en el
mensaje news:%23Ktk6NK$
> Hola!! te entiendo a la perfecccion, veamos algunas alternativas
>
> 1) Armas Stores procedures y como entrada pones el Id de Usuario con lo
cual
> la cosa se resolveria bastante
> 2) Usas una vista para cada conexion de usuario, o sea que cada usuario
sera
> un propietario mas o menos asi
> user1.clientes
> user2.clientes
>
> UserN.Clientes N
>
> Lo mas parecido a una vista parametrizada son las UDF (Funciones def del
> Usuario), revisa en el manual como hacerlo.
>
> Yo me inclino por ma opcion 1, es la que mas me gusta en lo personal


pero
> cada cual te dara otras opciones quizas mas interesantes que las mias.
>
> Bye
>
>
>
>
> Salu2
> Maxi
> Buenos Aires Argentina
> Desarrollador Microsoft 3 Estrellas .NET
> [Maxi_accotto[arroba]speedy[punto]com[punto]ar
> MSN:
>
>
> "isaac" escribió en el mensaje
> news:c1li10$i7b$
> > No soy experto en SQL Server 2000 y necesito algo de ayuda.
> >
> > Estoy diseñando una base de datos que me gustaría que fuera común para
> > multiples clientes que tengo. Ellos atacarán a la BD a través de un
> > backoffice montado en ASP. Cada cliente tiene sus datos personales y


no
> > tiene que ver los de otros clientes. El backoffice programado en ASP


es
el
> > mismo para todos.
> >
> > Necesito saber si es posible establecer algún filtro de tal modo que


las
> > consultas que realice el ASP filtre determinadas filas en función del
> > usuario que ha establecido la conexión con la base de datos. De este
modo
> > podría utilizar la misma base de datos y la misma programación ASP


para
> cada
> > uno de mis clientes. Se que puedo realizar Vistas para restringir
> > determinadas filas. A esa vista pueden tener acceso determinados
usuarios,
> > sin embargo creo que no me vale puesto que cada vista tendría un


nombre
> > distinto y en la programación ASP tendría que cambiar todas las
consultas
> > para cada cliente.
> >
> > Lo ideal sería que la única diferencia en los ASP de cada cliente sea


el
> > usuario que se conecta a la base de datos y en función del usuario que
se
> > conecta para parámetros a una especie de vístas parametrizadas.
> >
> > ¿Qué posibles soluciones hay? Por favor, que alguien me de alguna


pista
> para
> > ir leyendo en los Libros en Pantalla porque por más que busco no acabo
de
> > dar con la mejor solución.
> >
> > Gracias por vuestra atención.
> >
> >
>
>
>
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.593 / Virus Database: 376 - Release Date: 20/02/2004
>
>







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.593 / Virus Database: 376 - Release Date: 21/02/2004
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida