sql server - sirve - Base de datos+Autenticación de Windows+Nombre de usuario/Contraseña?
sql server sa password (7)
Depende: si te conectas desde una línea de comandos o una aplicación de Winforms DIRECTAMENTE a tu servidor SQL, puedes especificar "Seguridad Integrada = SSPI"; y luego use sus credenciales de Windows como credenciales de inicio de sesión, O bien, especifique "user id = ....; pwd = .....", pero eso es un inicio de sesión SQL, NO su inicio de sesión de Windows.
Usted menciona "suplantar y luego conectarse", lo que parece indicar ASP.NET, es una historia totalmente diferente. Si se hace pasar por una personificación, entonces básicamente está usando sus credenciales de Windows, por ejemplo, el servidor web lo "personificará" e iniciará sesión como usted (usando sus credenciales de Windows). En ese caso, una vez más, no es necesario especificar "uid = ....; pwd = ....." (si es así, se ignorará).
Como se muestra claramente en el enlace que mencionó, si puede conectarse directamente y especifica "Integrated Security = SSPI;", esto tendrá prioridad sobre cualquier uid = ...; pwd = .... que también puede especificar y registrar usted en el uso de sus credenciales de Windows; Esas piezas extra uid = ...; pwd = .... se ignoran.
Bagazo
Siempre he pensado que para conectarme al servidor SQL mediante la autenticación de Windows con credenciales explícitamente especificadas, debe iniciar sesión en el Usuario, hacer uso de la identidad y luego conectarse.
Me parece que este enlace sugiere que es posible conectarse al servidor SQL sin toda esta molestia, simplemente especificando "uid = ...; pwd = ..." en la cadena de conexión. Probé este método solo para asegurarme de que no funciona, y - he aquí que no funcionó. Si esa publicación del blog no estuviera en msdn.com, lo habría descartado como noob talk, pero lo es.
¿Alguien tiene una idea de lo que me estoy perdiendo?
EDIT 1: Muchos encuestados malinterpretaron a qué me refería. Aquí hay una copia / pegar de lo que estaba hablando. No es SQL integrado, ni es una suplantación de ASP.NET hecha por IIS:
string sql4 = String.Format(
@"Data Source={0};Integrated Security=SSPI;uid=<uid>;pwd=<pid>", server);
// Database + Windows Authentication + Username/Password
El artículo y el punto en cuestión se relacionan con la seguridad de SQL, no con la seguridad integrada. Puede pasar las credenciales para un usuario de SQL e iniciar sesión de esta manera si la autenticación de SQL (modo mixto) está habilitada. Si el servidor SQL está configurado para usar seguridad integrada solo, esto no funcionará. Tampoco funcionará para permitir el inicio de sesión con las credenciales de inicio de sesión de Windows.
En nuestra tienda, usamos rutinariamente cadenas de conexión como usted describe. No hay problema. Pero la base de datos de su servidor SQL debe configurarse para usar la seguridad de SQL, no la autenticación de Windows.
Una cadena de conexión de muestra (de web.config) en nuestra aplicación se ve así:
<connectionStrings>
<add name="ConfigurationData" connectionString="server=DevServer;
database=travel_expense_management_dv;uid=userid;pwd=password!;"
providerName="System.Data.SqlClient" />
</connectionStrings>
Por otro lado, el gurú de DBA para nuestra tienda me configuró una base de datos personal en el servidor principal que tenía seguridad integrada con mi inicio de sesión de Windows. No necesitaba uid y pwd porque tomó mi información de autenticación del contexto.
Esto es muy viejo pero quizás alguien tenga el mismo problema.
Puede conectarse utilizando WindowsAuthentication y especificando el ID de usuario y la contraseña en su cadena de conexión , pero no en todos los dispositivos. Puede lograr esto, por ejemplo, en dispositivos WinCE ( https://technet.microsoft.com/en-us/library/aa275613(v=sql.80).aspx ).
No sé si puede hacer lo mismo en otro sistema operativo solo con la cadena de conexión (sin hacer la suplantación).
Espero eso ayude.
Hay dos tipos distintos de seguridad con SQL Server. "Autenticación de Windows" y "Autenticación de SQL Server". Cuando ves uid y pwd estás viendo lo último. El uid en este caso no es un principio de Windows, el sistema operativo no sabe nada al respecto.
Entonces, la respuesta a su pregunta es no , no puede pasar el nombre de usuario y la contraseña de Windows en la cadena de conexión para iniciar sesión en SQL Server.
Sí, como dices, el artículo menciona esto:
string sql4 = String.Format(@"Data Source={0};Integrated Security=SSPI;uid=<uid>;pwd=<pid>", server); // Database + Windows Authentication + Username/Password
Pero si lees con cuidado algunas líneas más tarde, dice esto:
string sql4 -> Inicia sesión con el inicio de sesión de Windows, es decir. tiene prioridad sobre el nombre de usuario / contraseña.
:)
Solo una contribución también para algunos que todavía estaban encontrando problemas como este. Según mi experiencia, si no especifica ningún usuario / contraseña en su conectividad, se conectará automáticamente a db mediante la autenticación de Windows. Lo que significa que obtendrá el ID de usuario y la credencial del usuario que inició sesión en la máquina. El sistema le permitirá conectarse a la base de datos si identifica que su ID de usuario existe / se creó en la base de datos. Pero una vez que especifique su ID de usuario y contraseña en su conectividad, omita la autenticación de Windows y use la autenticación del servidor SQL en su lugar.