none
Aplicacion solo reconoce la Base de Datos si es Ejecutada como Administrador.

    Pregunta

  • Hola:

    Estoy desarrollando una aplicacion en Visual Studio 2008 la cual se conecta a una base de datos local. Cuando ejecuto la aplicacion en ambiente de desarrollo todo trabaja perfecto, al igual que cuando ejecuto el .exe ubicado en la carpeta bin del proyecto con permisos de administrador (clic derecho - ejecutar como administrador).

    Necesito que debo hacer para que la aplicacion se pueda conectar a la bd sin tener que ser ejecutada con permisos de administrador o, en caso de que sea necesario que corra con estos permisos, saber como se los activo por defecto.

    Mil gracias!
    viernes, 30 de octubre de 2009 9:33

Respuestas

  • hola

    Algo que podrias probar es el de poner el tu SO al usuario con que estas logueado en el grupo de administradores local de la PC

    igual se que esta no es la mejor solucion, lo que debe estar pasando es que seguramente te estas conectando a la db con seguridad integrada, y este usuario no tiene permisos de acceso

    - que string de conexion estas utilizando para conectarte a sql server?


    revisa la seguridad de la db, y verifica si el usuario con que estas logueando a Windows este presente 


    la imagen te guiara a donde me refiero que se debe verificar si el usuario esta presente, o algún grupo en el que este incluido
    por defecto el grupo de administradores tiene acceso por eso te comentaba al principio que lo agregues a ese grupo de la pc local.


    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 01 de noviembre de 2009 19:59
  • La instalación predeterminada de Sql Server únicamente da de alta como "login" el grupo de Administradores de Windows, mapeándolo al rol de sysadm de la base de datos. Si se quiere que puedan acceder al Sql Server otros usuarios que no sean administradores, es necesario crearles expresamente un "login".

    El login se puede crear desde el Sql Server Management Studio (SSMS), en la rama Seguridad que cuelga del Servidor en el Examinador de Objetos. Hay dos alternativas:
    1) Puedes añadir el usuario de Windows con el que ejecutas el programa, y dejar en la cadena de conexión la autneticación integrada.
    2) Puedes crear un usuario con su password, usando autenticación de Sql Server, y añadir esos datos en la cadena de conexión. En este caso, hay que habilitar en el servidor este modo de funcionamiento, que por defecto viene desactivado (te deja crear el usuario pero luego no puede hacer login). Para activar la autenticación de Sql Server, se puede usar el SSMS, pestaña Seguridad en las Propiedades del Servidor.

    Una vez añadido el "login", hay que mapearlo a un "user" en la base de datos a la que deba acceder. Una vez más, esto se hace desde el SSMS, rama "Seguridad" de la base de datos (no la rama del servidor, que es la que hemos usado antes para crear el "login"). Desde la misma ventana que sirve para crear el usuario se le pueden dar los permisos que convengan, por ejemplo, se puede marcar el checkbox que lo habilita como db_owner si queremos que tenga permisos ilimitados sobre esa base de datos.

    domingo, 01 de noviembre de 2009 20:14
  • hola

    hay un tema aquí sino recuerdo mal cuando instalas sql server en uno de los puntos seleccionas si quieres seguridad integrada o lo que se denomina mixed mode

    me refiero a esto:


    lo que no estoy seguro si esta explicación aplicara a sql server 2005

    aunque este otro seguro funcione:




    veras que en este link hay una nota que dice: 
    "Siempre que sea posible, utilice la autenticación de Windows."


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 01 de noviembre de 2009 20:38

Todas las respuestas

  • :-)
    Hola,

    ¿Que tipo de BD es?
    ¿Que error te da?

    Saludos,

    No olvides marcar la respuesta como correcta si te ha sido de utilidad :-)

    [MS-MVP-MCTS]

    Mi Perfil MVP en: https://mvp.support.microsoft.com/profile/Lluis
    NUG: http://andorradotnet.com
    Web: http://www.ordeeno.com
    Blog: http://msmvps.com/blogs/lfranco
    Geeks: http://geeks.ms/blogs/lfranco

    viernes, 30 de octubre de 2009 10:26
  • Es en SQL Server 2005 y el error es que la aplicacion crashea.

    Estuve buscando como hacer que la aplicacion corra con permisos de administrador todo el tiempo y di con esto: http://community.bartdesmet.net/blogs/bart/archive/2006/10/28/Windows-Vista-_2D00_-Demand-UAC-elevation-for-an-application-by-adding-a-manifest-using-mt.exe.aspx

    Reemplazo el manifest y me funciona (inicia con permisos de administrador) mientras no vuelva a compilar la aplicacion, si la compilo de nuevo se sobreescribe el manifest y sigue ejecutando sin permisos de admin.

    Gracias
    viernes, 30 de octubre de 2009 17:47
  • Es en SQL Server 2005 y el error es que la aplicacion crashea.

    Estuve buscando como hacer que la aplicacion corra con permisos de administrador todo el tiempo y di con esto: http://community.bartdesmet.net/blogs/bart/archive/2006/10/28/Windows-Vista-_2D00_-Demand-UAC-elevation-for-an-application-by-adding-a-manifest-using-mt.exe.aspx

    Reemplazo el manifest y me funciona (inicia con permisos de administrador) mientras no vuelva a compilar la aplicacion, si la compilo de nuevo se sobreescribe el manifest y sigue ejecutando sin permisos de admin.

    Gracias
    Alguien sabe algo???? :(
    sábado, 31 de octubre de 2009 22:33
  • Quizás debas modificar permisos del usuario que ejecuta la aplicación contra la BBDD y no es el administrador en el SQLSERVER.
    domingo, 01 de noviembre de 2009 19:03
  • hola

    Algo que podrias probar es el de poner el tu SO al usuario con que estas logueado en el grupo de administradores local de la PC

    igual se que esta no es la mejor solucion, lo que debe estar pasando es que seguramente te estas conectando a la db con seguridad integrada, y este usuario no tiene permisos de acceso

    - que string de conexion estas utilizando para conectarte a sql server?


    revisa la seguridad de la db, y verifica si el usuario con que estas logueando a Windows este presente 


    la imagen te guiara a donde me refiero que se debe verificar si el usuario esta presente, o algún grupo en el que este incluido
    por defecto el grupo de administradores tiene acceso por eso te comentaba al principio que lo agregues a ese grupo de la pc local.


    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 01 de noviembre de 2009 19:59
  • hola

    Algo que podrias probar es el de poner el tu SO al usuario con que estas logueado en el grupo de administradores local de la PC

    igual se que esta no es la mejor solucion, lo que debe estar pasando es que seguramente te estas conectando a la db con seguridad integrada, y este usuario no tiene permisos de acceso

    - que string de conexion estas utilizando para conectarte a sql server?


    revisa la seguridad de la db, y verifica si el usuario con que estas logueando a Windows este presente 


    la imagen te guiara a donde me refiero que se debe verificar si el usuario esta presente, o algún grupo en el que este incluido
    por defecto el grupo de administradores tiene acceso por eso te comentaba al principio que lo agregues a ese grupo de la pc local.


    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Hola: 

    Mil gracias por todas sus respuestas.

    Resulta que efectivamente me estoy conectando con Seguridad Integrada. Yo quisiera hacerlo estableciendo un usuario y un password en la bd. Pero he leido muchos tutos de como hacerlo y no doy.

    Algun link que conozcan donde me quede bien claro como hacer la credencial y como configurar todo el ambito de seguridad que esto exige?

    Gracias de nuevo!


    domingo, 01 de noviembre de 2009 20:02
  • La instalación predeterminada de Sql Server únicamente da de alta como "login" el grupo de Administradores de Windows, mapeándolo al rol de sysadm de la base de datos. Si se quiere que puedan acceder al Sql Server otros usuarios que no sean administradores, es necesario crearles expresamente un "login".

    El login se puede crear desde el Sql Server Management Studio (SSMS), en la rama Seguridad que cuelga del Servidor en el Examinador de Objetos. Hay dos alternativas:
    1) Puedes añadir el usuario de Windows con el que ejecutas el programa, y dejar en la cadena de conexión la autneticación integrada.
    2) Puedes crear un usuario con su password, usando autenticación de Sql Server, y añadir esos datos en la cadena de conexión. En este caso, hay que habilitar en el servidor este modo de funcionamiento, que por defecto viene desactivado (te deja crear el usuario pero luego no puede hacer login). Para activar la autenticación de Sql Server, se puede usar el SSMS, pestaña Seguridad en las Propiedades del Servidor.

    Una vez añadido el "login", hay que mapearlo a un "user" en la base de datos a la que deba acceder. Una vez más, esto se hace desde el SSMS, rama "Seguridad" de la base de datos (no la rama del servidor, que es la que hemos usado antes para crear el "login"). Desde la misma ventana que sirve para crear el usuario se le pueden dar los permisos que convengan, por ejemplo, se puede marcar el checkbox que lo habilita como db_owner si queremos que tenga permisos ilimitados sobre esa base de datos.

    domingo, 01 de noviembre de 2009 20:14
  • hola

    hay un tema aquí sino recuerdo mal cuando instalas sql server en uno de los puntos seleccionas si quieres seguridad integrada o lo que se denomina mixed mode

    me refiero a esto:


    lo que no estoy seguro si esta explicación aplicara a sql server 2005

    aunque este otro seguro funcione:




    veras que en este link hay una nota que dice: 
    "Siempre que sea posible, utilice la autenticación de Windows."


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 01 de noviembre de 2009 20:38
  • hola

    hay un tema aquí sino recuerdo mal cuando instalas sql server en uno de los puntos seleccionas si quieres seguridad integrada o lo que se denomina mixed mode

    me refiero a esto:


    lo que no estoy seguro si esta explicación aplicara a sql server 2005

    aunque este otro seguro funcione:




    veras que en este link hay una nota que dice: 
    "Siempre que sea posible, utilice la autenticación de Windows."


    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Pero es que si yo voy a distribuir mi aplicacion y la aplicacion depende de la base de datos la cual es local, como me voy a ir a cada maquina en la que se instale el software a configurar la base de datos??? Seria insolito hacerlo asi.

    Yo necesito configurar la BD con un usuario. Ahora, ese usuario que yo registre (al que le creo el login) debe existir en el equipo de windows donde este la BD o pertenece directamente a esta? Porque si debe ser usuario de windows pues nada se hace :S

    En fin, mil gracias por la ayuda y si alguien tiene mas informacion bienvenida. Voy a estar leyendo lo que me han pasado.
    domingo, 01 de noviembre de 2009 21:20
  • hola

    Recuerda que sql server de por si no esta pensada al 100% para trabajar en modo local, o sea sql server es un motor de base de datos en donde deberia trabajar en un servidor de base de datos centralizado al cual accedieran todas las terminales.
    Este es que esquema con que fue pensado sql server y muchos otros sevidores, no es un defect de sql server, si tomas Oracle te apsara lo mismo, hay una versión local de Oracle y seguro te encoantraras con el mismo problema, por ahi mysql es algo diferente porque no esta tan integrado a Windows pero la seguridad es similar si debes crear una cuanta.

    En sql server también puede si habilitar la seguridad de SQL, o como te comentaba la seguridad mixta (mixed mode).

    Segun comentas entonces estas usando Sql Server Express, el cual es una version limitada del motor original.

    En tu caso comentas que redistribuyes la aplicacion y que cada terminar tiene su db instalada, la pregunta seria es asi como debe funcionar la aplicación? es solo una pregunta, en ningún momento usuario compartiran informacion entre ellos ?


    Si verdaderamente tu aplicacion corre local entonces se solucina facil como muestran los link que pase anteriormente solo debes habilitar la seguridad de SQL Server y eso es todo, por defecto tiene la cuanta de "sa", pero puede crear otra cuenta diferente si necesitas.


    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    domingo, 01 de noviembre de 2009 21:33
  • Una pregunta: La base de datos, ¿necesitas que sea multiusuario? Lo digo porque si la vas a instalar como local, y sólo la va a usar la aplicación local, podrías montarla en el modo que se denomina "Instancia de Usuario". Esto se consigue poniéndole en la cadena de conexión el parámetro "User Instance=true;AttachDbFilename=\ruta\Database.mdf". De esta manera, se "monta" directamente el fichero .mdf (que lo puedes distribuir junto con tu programa), y automáticamente te reconoce el usuario actual como "dbo" de la base montada, sin que tengas que hacer nada para cambiar los permisos. Ah, por cierto, esto solo funciona con la versión Express.
    domingo, 01 de noviembre de 2009 21:58
  • Una pregunta: La base de datos, ¿necesitas que sea multiusuario? Lo digo porque si la vas a instalar como local, y sólo la va a usar la aplicación local, podrías montarla en el modo que se denomina "Instancia de Usuario". Esto se consigue poniéndole en la cadena de conexión el parámetro "User Instance=true;AttachDbFilename=\ruta\Database.mdf". De esta manera, se "monta" directamente el fichero .mdf (que lo puedes distribuir junto con tu programa), y automáticamente te reconoce el usuario actual como "dbo" de la base montada, sin que tengas que hacer nada para cambiar los permisos. Ah, por cierto, esto solo funciona con la versión Express.
    Pues esto me serviria en estos momentos para desplegar la beta, pero en corto tiempo se hara otro modulo que se conectara remotamente a la base de datos.

    Igual ya intente lo que dijiste varias veces, y no me funciona, tambien saca error y no tengo idea por que.

    Sigo intentando, mil gracias.
    lunes, 02 de noviembre de 2009 22:47
  • Hola!

    ¿ Puedes postar la string de conexión que utiliza para conectar a la base de datos SQL?

    Saludos!
    Rafael Fagundes
    jueves, 05 de noviembre de 2009 13:55