PDA

Ver la Versión Completa : Como crear un usuario SQLSERVER desde ASP.NET sin ser DBA o SA?


HombreSigma
20-11-2005, 20:18:49
¿Como crear un usuario de una BD SQLSERVER y su clave sin ser un usuario administrador?

Pretendo crear o actualizar un usuario y su clave en la base de datos SQLSERVER mediante el siguiente procedimiento:

sub ActualizarClavePermisos()
'Actualiza clave y permisos
dim vrComandoSQL as SqlCommand= New SqlCommand()'

dim vrParametroSQL as New SqlParameter
vrParametroSQL=vrComandoSQL.Parameters.Add("@prLogin",sqlDbType.varchar)
vrParametroSQL.Direction=ParameterDirection.Input
vrParametroSQL.Value=clmatIdUsuario.Text'

vrParametroSQL=vrComandoSQL.Parameters.Add("@prClave",sqlDbType.varchar)
vrParametroSQL.Direction=ParameterDirection.Input
vrParametroSQL.Value=tbxxxClave.Text

vrParametroSQL=vrComandoSQL.Parameters.Add("@prFuncion",sqlDbType.varchar)
vrPArametroSQL.Direction=ParameterDirection.Input
vrParametroSQL.Value="UsuarioNormal"

with vrComandoSQL
.Connection=vrBaseDatos.vrSqlConexion
'.Transaction=objTrans
.CommandText="spAutorizarUsuarioNormal"
.CommandType=CommandType.StoredProcedure
.ExecuteScalar
end with
end sub

La idea es que el usuario sea el mismo usuario de la base de datos y que la clave por tanto corresponde a la misma requerida para acceder la base de datos.

Obviamente para ejecutar el procedimiento anterior requiero de un usuario administrador de BD por lo que invoco el método anterior abriendo la BD con la clave de un usuario administrador asi:
---------------------------------------------------------------------
dim vrMensajeBaseDatos=vrBaseDatos.ConectarABaseDatos("SA","k")
if vrMensajeBAseDatos<>"Open" then
lblMensaje.Text="No pudo abrirse la base de datos. " & vrMensajeBaseDatos
else
ActualizarClavePermisos()
etcétera ....
---------------------------------------------------------------

ConectarABaseDatos es una rutina que arma la cadena de conexión con usuario "SA" y clave "K" y luego abre la base de datos como es normal.

Lo que no me parece recomendable es usar SA y k explicitamente en el código además que el el administrador de base de datos puede cambiar la clave en cualquier momento y la rutina de conexión no funcionaría.

¿Como crear un usuario y su clave en SQLSERVER sin ser un usuario administrador?
Es posible esto?

Gracias por cualquier información.

__hector
02-12-2005, 20:03:54
Es posible crear usuarios en la base de datos, sin ser dba, pero el usuario con el que realizas la conexion debe pertenecer al grupo security administators o system administrators de la instancia de sql server.