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$
Mostrar la cita
cada
Mostrar la cita
para
Mostrar la cita
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
#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

Mostrar la cita
ayuda.
Mostrar la cita
fuera común para
Mostrar la cita
través de un
Mostrar la cita
personales y no
Mostrar la cita
programado en ASP es el
Mostrar la cita
tal modo que las
Mostrar la cita
función del
Mostrar la cita
datos. De este modo
Mostrar la cita
programación ASP para cada
Mostrar la cita
restringir
Mostrar la cita
determinados usuarios,
Mostrar la cita
tendría un nombre
Mostrar la cita
todas las consultas
Mostrar la cita
cliente sea el
Mostrar la cita
del usuario que se
Mostrar la cita
parametrizadas.
Mostrar la cita
de alguna pista para
Mostrar la cita
busco no acabo de
Mostrar la cita
#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:
Mostrar la cita
#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$
Mostrar la cita
cual
Mostrar la cita
sera
Mostrar la cita
el
Mostrar la cita
modo
Mostrar la cita
usuarios,
Mostrar la cita
consultas
Mostrar la cita
se
Mostrar la cita
de
Mostrar la cita
#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$
Mostrar la cita
que
Mostrar la cita
las
Mostrar la cita
distinto
Mostrar la cita
perfecta
Mostrar la cita
la
Mostrar la cita
sesion,
Mostrar la cita
pero
Mostrar la cita
no
Mostrar la cita
es
Mostrar la cita
las
Mostrar la cita
para
Mostrar la cita
nombre
Mostrar la cita
el
Mostrar la cita
pista
Mostrar la cita
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
Ads by Google
Search Busqueda sugerida