none
Configurar Usuario para conectar a SQL Server RRS feed

  • Pregunta

  • Buenas , estoy desarrollando una aplicación de gestión con SQL Server y c# y hasta ahora accedia a la BD sin user y password y ahora me gustaria ponerle un usuario con password a  la Base de datos para que luego los usuarios no puedan acceder a ella.

    Mi duda es que cuando creo un usuario de sql server desde el SQL Server Management me deja hacerlo en la propia BD o a nivel del servidor SQL Server , mi pregunta es donde debo crearlo ?

    Entro en la BD que se llama "pruebas" voy a Security --> Users  y lo creo allí

    Es que después me aparece un menú muy similar en la raíz del SQL Server que pone Security --> Logins

    Gracias

    miércoles, 27 de abril de 2016 8:33

Respuestas

  • La entrada a SQL Server es un proceso en dos pasos: Primero hace falta atravesar un Login creado en la pestaña Security a nivel de instancia. Este Login es el que contiene el nombre de usuario y la password que vienen en la cadena de conexión. Después ese Login se mapea a un User en la base de datos (y podría ser diferente en cada una de las bases de datos a las que tenga acceso ese Login). Ese User simplemente es un identificador interno a nivel de base de datos que sirve para asignarle permisos, pero no se pone en ningún sitio de la cadena de conexión, y en principio es "transparente" para el programa cliente, que nunca necesita utilizar ese nombre de User.

    Nota: Un asunto aparte son las "contained databases", que contienen sus propios logins saltándose los logins de la instancia. Este mecanismo está deshabilitado de forma predeterminada, me imagino que no lo estás usando.

    • Marcado como respuesta golfgti6 miércoles, 27 de abril de 2016 14:43
    miércoles, 27 de abril de 2016 9:17

Todas las respuestas

  • La entrada a SQL Server es un proceso en dos pasos: Primero hace falta atravesar un Login creado en la pestaña Security a nivel de instancia. Este Login es el que contiene el nombre de usuario y la password que vienen en la cadena de conexión. Después ese Login se mapea a un User en la base de datos (y podría ser diferente en cada una de las bases de datos a las que tenga acceso ese Login). Ese User simplemente es un identificador interno a nivel de base de datos que sirve para asignarle permisos, pero no se pone en ningún sitio de la cadena de conexión, y en principio es "transparente" para el programa cliente, que nunca necesita utilizar ese nombre de User.

    Nota: Un asunto aparte son las "contained databases", que contienen sus propios logins saltándose los logins de la instancia. Este mecanismo está deshabilitado de forma predeterminada, me imagino que no lo estás usando.

    • Marcado como respuesta golfgti6 miércoles, 27 de abril de 2016 14:43
    miércoles, 27 de abril de 2016 9:17
  • Muchas gracias por la respuesta , entonces tengo una pregunta relacionada.

    En el archivo de Setup de la aplicación que hago desde Visual Studio 2013 con la extensión correspondiente allí creo un instalador para el ejecutable que hago , aunque la SQL Server Express no la voy a incluir en el setup ya que la idea que tengo para instalarlo en las distintas máquinas clientes es :

    Paso 1- Instalar SQL Server express con su correspondiente paquete

    Paso 2- Instalar Setup.exe que pone el ejecutable en su sitio y además restaura una BD en blanco en la instancia que por código viene indicada.

    Entonces mi pregunta es , para distribuir un usuario y password para esta BD debo hacerlo en el mismo script donde restauro la BD , o antes de restaurar la BD? Y de ser asín sabéis donde puedo encontrar un ejemplo ?

    Gracias

    miércoles, 27 de abril de 2016 14:45
  • Sobre eso hay que hacer un matiz: ¿tu programa monta la base de usuario en modo User_Instance en el SQL Express? Si está como User_instance, entonces no se aplica lo anterior: El usuario que monta la base de datos lo toma automáticamente como dbo y tiene permisos ilimitados sobre ella, sin pasar por ningún Login.

    Si por el contrario el Restore la está montando de manera permanente en el motor de base de datos, entonces sí que necesitas rodar un script que cree el login y el user. El Login da igual crearlo antes o después del restore, pero el User necesariamente tiene que crearse después, porque se graba dentro de la base de datos.

    miércoles, 27 de abril de 2016 17:17