Problemas con VB6-SQL Server

Hola, estoy migrando una aplicación vb5->Access97 a vb6->SQL Server.
Aprovecho para pasar de DAO a ADO y en principio todo funciona bien, pero solo si trabajo con un usuario con la función de servidor 'System Administrator', en el momento que le quito esta función, SQL me autentifica pero no me deja ver ninguna tabla.
En principio al usuario normal le asigno las funciones de base de datos:
public, db_accessadmin, db_datareader, db_datawriter, db_denyreader y db_denywryter
Y los permisos:
SELECT, INSERT, UPDATE, DELETE, DRI en las tablas a las que debe acceder
Es la primera vez que trabajo con SQL Server y no controlo bien el tema de los permisos
- ¿Qué estoy haciendo mal?
- ¿Conoces alguna página Web, libro . Que explique bien los permisos para SQL Server?
Nota: he probado con SQL Server 2000 y MSDE (SQL Server 7) y me pasa lo mismo.
Gracias.
Enrique Engenios.

1 respuesta

Respuesta
No necesitas asignar el usuario a master. Lo correcto es asignar al usuario la base de datos por defecto que vaya a utilizar.
Lo que te falla a ti es que ese usuario, a pesar de tener por defecto una base de datos, no tiene permisos para hacer nada con ella.
Una vez tengas asignado el usuario a la base de datos ve a esa base y haz doble click sobre una tabla. Te saldrá una caja con los campos de esa tabla y alguna información más. En esa caja veras que hay un botón que pone permisos, púlsalo. Te saldrá otra caja con los usuarios que tiene asignada la tabla y con los permisos select, update, insert, delete y dri (no se si me olvido alguno) Hay es donde deberás asignar los permisos que necesite el usuario
Aleluya.
He conseguido dar de alta un usuario con un perfil razonable, pero solo funciona si lo genero con el "Asistente para la creación de inicios de sesión", si creo manualmente el inicio de sesión y el usuario de base de datos no funciona, a pesar de tener las mismas propiedades que el generado con el asistente. ¿Es esto normal?
Más notas:
- Esto me pasa tanto con seguridad SQL-Server como con la de W2000.
- Si creo una función de base de datos para asignar las propiedades una sola vez, solo funciona con el usuario generado con el asistente.
Gracias de nuevo, un saludo.
Enrique Engenios.
He conseguido crear un usuario manual mente, el error estaba en que al crear el unsuario le asignaba mi base de datos como la base de datos por defecto,
si asigno master como base de datos por defecto todo funciona bien.
¿Es esto normal?...
Gracias, de todos modos te agradecería algún comentario
Un saludo.
Enrique Engenios
Gracias por atender mi consulta.
Lo que me indicas es lo lógico y es lo primero que intenté hacer, pero como te comento en el primer escrito si lo hago así resulta que no veo las tablas ni puedo acceder a ellas a través de SELECT ...
Un Saludo
Los pasos que te he dado son los que funcionan y los que yo uso. Desde aquí no se si te puedo dar mucha más ayuda.
Lo único que se podría hacer es echarle un vistazo a la base de datos pero para eso necesitaríamos que estuviese en linea con una buena conexión (yo tengo ADSL 256Kb) quedar a una hora (hora de España si no te importa) y echarle un vistazo
Tuve que salir de la oficina y no podía seguir haciendo pruebas.
De todas formas he probado en otras instalaciones y en efecto no hace falta que el usuario pertenezca al base master. De momento, en la instalación de mi cliente los usuarios que tenia que definir los he hecho que pertenezcan a esta base de datos, la única pregunta que me queda es:
¿Esto implica algún problema en cuanto a la seguridad?
Como te dije no conozco SQL Server y no se si master es algún tipo de base especial o simplemente es una de ejemplo.
Gracias y perdona de nuevo el retraso
Un saludo, Enrique Engenios.
La base de datos Master es la principal en el sistema. Es en la que SQL anota información sobre el resto de bases de datos.
De todos modos yo insisto en que para crear un perfil de usuario para una base de datos tienes que hacer estos pasos:
1.- Definir el usuario en seguridad/inicios de sesión
2.- Asignar permiso para la base de datos concreta en propiedades del inicio de sesion/acceso a bases de datos. En este punto puedes también especificar la base de datos por defecto del usuario y un rol pero no es imprescindible
En este punto podrás comprobar si vas a la base de datos y miras usuarios que te aparezca el inicio de sesión que acabas de dar permisos
3.- Tienes que ir, en este punto, tabla por tabla y darle permisos al usuario para INSERT, UPDATE, DELETE y SELECT. Para hacer esto en propiedades de la tabla hay un botón de permisos
Estos son los pasos correctos y adecuados para asignar permisos a un usuario. Si no puedes hacer esto mismo es que algo estas haciendo mal como por ejemplo que el usuario con el que intentas asignar permisos no tenga permiso para hacer esto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas