Power Builder - Crear usuario desde la aplicacion en SQL Server

 
Vista:

Crear usuario desde la aplicacion en SQL Server

Publicado por antonio (1238 intervenciones) el 19/10/2019 17:10:44
Un saludo a todos:

Resulta que tengo que hacer un procedimiento en el cual se registre un usuario con privilegios en una base de datos de SQL Server.

He conseguido registrarlo pero me falta darle los privilegios a ciertas tablas o a toda la base de datos que tengo en SQL Server... Ejemplo

usuario = 'cajero1'
Password = '1234'

Este usuario lo registro de esta manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
string ls_sql
string ls_usuario
string ls_password
string ls_database = 'SIR'
 
ls_usuario = 'cajero1'
ls_password = '1234'
sqlca.autocommit = true
 
ls_sql = "SP_ADDLOGIN '"+ ls_usuario + "' , '" + ls_password + "' , '" + ls_database + "'," + "'us_english'"
Execute Immediate :ls_sql using sqlca;
 
if sqlca.sqlcode <> 0 then
	Messagebox(string(sqlca.sqlcode) + "error","Login " + sqlca.sqlerrtext)
	return
end if
 
//agrego el usuario
ls_sql = "SP_ADDUSER '" + ls_usuario + "','" + ls_usuario + "', " + "'db_owner'"
 
Execute Immediate :ls_sql using sqlca;
If sqlca.sqlcode <> 0 then
	Messagebox(string(sqlca.sqlcode),"User " + sqlca.sqlerrtext)
	return
else
	Messagebox('Proceso Correcto...',"Usuario creado para la base de Datos " + ls_database)
end if

Se registra correctamente pero cuando quiero conectarme con ese usuario de esta manera:

1
2
3
4
5
6
7
8
9
SQLCA.DBMS = "OLE DB"
SQLCA.LogPass = "1234"
SQLCA.LogId = "cajero1"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='SISTEMAS\SOFTLOGIC',PROVIDERSTRING='database='SIR''"
 
Connect using sqlca;
 
return sqlca.sqlcode

Me regresa el error que no se puede iniciar sesión, ni tampoco tiene acceso a las tablas o base de datos.

Esto úlitmo es lo que me hace falta.

¿Alguien lo ha hecho o darme una orientación de como darle acceso a ciertas tablas o a toda la base datos y darle privilegios de select, modify, delete, insert... etc etc?

Gracias por sus comentarios y apoyo...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Crear usuario desde la aplicacion en SQL Server

Publicado por Jorge (28 intervenciones) el 08/12/2019 22:36:42
Hola

Si es un usuario normal, al crear el usuario (SP_ADDUSER) se debe precisar "public" en vez de "db_owner".

Si el usuario a crear es un usuario con privilegios, por ejemplo, para que haga backup, cree otros usuarios, etc. se debe agregar un rol, por ejemplo el "db_backupoperator". Esto se realiza con el SP_ADDSRVROLEMEMBER.

Saludos
Jorge
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Leonardo Daniel A.
Val: 808
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Crear usuario desde la aplicacion en SQL Server

Publicado por Leonardo Daniel A. (358 intervenciones) el 09/12/2019 00:02:13
Hola ya te respondieron... perooooooooooooo

porque quieres manejarlo asi ?? porque el manejo de usuarios asi, si puedes asignar permisos a los comandos, select, update, etc. pero no al acceso a las opciones de menu, botones, ventanas, etc. porque no lo manejas desde la misma aplicacion, yo solo manejo un usuario que se conecta a la b.d. y tengo mi tabla de usuarios y la tabla de permisos, y no tengo que esperar a que la b.d. me responda, el usuario no tiene permiso de actualizar, de eliminar, etc.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Adolfo
Val: 237
Bronce
Ha disminuido 1 puesto en Power Builder (en relación al último mes)
Gráfica de Power Builder

Crear usuario desde la aplicacion en SQL Server

Publicado por Adolfo (135 intervenciones) el 09/12/2019 15:01:21
Yo hago lo mismo que Leonardo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar