Conecte diferentes usuarios de Windows en SQL Server Management Studio (2005 o posterior)

333

¿Hay alguna manera en SQL Server Management Studio 2005 (o posterior) para cambiar el usuario de autenticación de Windows (como podría hacerlo en SQL Server 2000 y versiones anteriores)?

Este es el cuadro de diálogo general de propiedades de conexión (tenga en cuenta el UID / PWD en gris cuando seleccione Windows Auth):

diálogo

FYI: una solución alternativa es usar, runaspero estoy buscando una solución que me permita trabajar con varias cuentas de Windows en varios servidores (y en varios dominios).

Matt P.
fuente
2
Hasta donde yo sé, Run As ... es la única forma de lograr esto. ¿Por qué no puede usar Ejecutar como ... e iniciar una sesión de estudio de administración diferente para cada usuario?
DCNYAM
44
RunAs solo funciona si estás en el mismo dominio y / o bosque. Si eres un consultor, nunca estás en el mismo dominio y / o bosque, por lo que sería una buena característica.
Eric
Puedo sentirte, Eric. A veces uso máquinas virtuales con clientes para que la máquina virtual pueda ser parte del dominio / bosque del cliente y me permita trabajar un poco más sin problemas, pero si está trabajando activamente con múltiples dominios, esto puede ser tedioso.
Ed Altorfer
66
Múltiples dominios es un caso de uso. Otro son los Servicios de Windows que inician sesión con su propia cuenta de servicio y un desarrollador que desea verificar la conectividad SQL, los permisos, etc. Parece que no tengo suerte. . . Al menos tenemos runas.
Matt P.

Respuestas:

418

Si bien no hay forma de conectarse a varios servidores como usuarios diferentes en una sola instancia de SSMS, lo que está buscando es la siguiente sintaxis RUNAS:

runas /netonly /user:domain\username program.exe

Cuando utiliza el modificador "/ netonly", puede iniciar sesión con credenciales remotas en un dominio del que no es miembro actualmente, incluso si no hay una configuración de confianza. Simplemente le dice a las runas que las credenciales se usarán para acceder a recursos remotos: la aplicación interactúa con la computadora local como el usuario actualmente conectado e interactúa con las computadoras remotas como el usuario cuyas credenciales ha proporcionado.

Aún tendría que ejecutar varias instancias de SSMS, pero al menos podría conectarse como diferentes usuarios de Windows en cada una.


Por ejemplo: runas /netonly /user:domain\username ssms.exe

SqlRyan
fuente
28
Si desea el mismo dominio pero un usuario diferente, suelte el modificador / netonly.
jimconstable
55
Lo que pasa con el interruptor netonly es absolutamente dorado. Tantos escenarios que necesitaba este. Gracias.
Jivko Petiov
77
+1 para la forma más conveniente de hacer esto en la actualidad. Todavía es poco convincente que MS no pueda simplemente plegar un cuadro de diálogo de inicio de sesión de estilo de escritorio remoto / MSTSC en SSMS y configurarlo por conexión.
Paul Smith
77
¡Guauu! netonly! Fantástico. Sin embargo, es algo divertido que una vez que se está ejecutando, cuando intentas conectarte a un servidor remoto con autenticación de Windows, muestra a tu usuario local, no al usuario netonly. Hace que parezca mágico cuando se conecta ...
TTT
2
La respuesta a continuación de user175017 funcionó para mí, parece mucho más fácil y permite conexiones de Windows específicas del servidor en una sesión SSMS. En resumen, en Win 7, ejecute "Credential Manager" y simplemente agregue las credenciales de Windows para <servername>: 1433, donde <servername> es la máquina SQL Server, totalmente calificada (como MyServer.MyCompany.Com).
David Korn
161

Mantenga shiftpresionado y haga clic con el botón derecho en el ícono de estudios de administración de SQL Server. Puede ejecutar como otro usuario de la cuenta de Windows.

Suresh
fuente
31
Desafortunadamente, esto no funciona cuando la cuenta está en otro dominio / red; devuelve un nombre de usuario / contraseña no válido. El comando anterior funciona independientemente de que la cuenta esté en otra red.
Jerad Rose
1
¡Esto funcionó para mí! En mi caso tengo dos cuentas bajo el mismo dominio.
Tathagata el
Funciona en Windows 10.
wrkwrk
Trabajó para mí en un dominio diferente.
Tahir Hassan
1
¿Cómo ejecutarlo como otro usuario de la cuenta de Windows y como administrador ?
Kiquenet
116

Otra forma que descubrí fue ir a "Inicio"> "Panel de control"> "Nombres de usuario y contraseñas almacenados" (Herramientas administrativas> Credential Manager en Windows 7) y agregar la cuenta de dominio que usaría con el comando "runas" .

Luego, en SQL Management Studio 2005, simplemente seleccione la "Autenticación de Windows" e ingrese el servidor al que desea conectarse (aunque el usuario que puede ver en gris sigue siendo el usuario local) ... ¡y funciona!

¡No me preguntes por qué! :)

Editar: asegúrese de incluir ": 1433" después del nombre del servidor en Credential Manager o puede no conectarse debido a que no confía en el dominio.

Dagronlund
fuente
10
Honestamente, esta respuesta debe estar marcada. La solución runas no funcionó para mí y creó un dolor de cabeza porque a smss no le gusta comenzar en la consola, que es lo que sucede cuando invocas en smss. E incluso una vez que eso dejó de suceder, todavía no funcionó. Pero Credential Manager> Agregar una credencial de Windows funcionó. Ingrese el nombre del servidor, y su DOMINIO \ nombre de usuario y la contraseña. Tal como él dice, aún MOSTRARÁ al usuario local, pero se conecta de todos modos.
Brian Arsuaga
16
Es posible que deba usar sqlserver.domain.com:1433 como la dirección de red. Ver stackoverflow.com/questions/6944933
Greg Bray
77
De hecho, esto funcionó para mí, parece mucho más fácil y permite conexiones de Windows específicas del servidor en una sesión SSMS. Acabo de ejecutar "Credential Manager" y agregué las credenciales de Windows para <servername>: 1433, donde <servername> es la máquina de SQL Server, totalmente calificada (como MyServer.MyCompany.Com).
David Korn
1
El runasmétodo no funcionó para mí, pero esto sí. Inicialmente intenté sin la información del puerto en Credential Manager, pero aún no podía iniciar sesión. Cuando agregué la información del puerto en Credential Manager, funcionó de maravilla. muchas gracias por esto!
René
1
Esta podría ser la solución más elegante. Funciona en Windows 8.1 para mí al conectarme a una instancia independiente de SQL 2012 que ni siquiera es parte de un dominio. <nombre de servidor>: 1433
Tim Lehner
10

El runas /netonly /user:domain\username program.execomando solo funcionó para mí enWindows 10

  • guardarlo como un archivo por lotes
  • ejecutándolo como administrador,

Al ejecutar el lote de comandos como usuario normal, recibí el problema de contraseña incorrecto mencionado por algunos usuarios en comentarios anteriores.

Ricardo Mercado
fuente
Esto también funcionó para mí, no hay relación de confianza entre dominios. Pude iniciar SSMS y conectarme a un servidor SQL usando la cuenta de otros dominios (aunque en la interfaz de usuario dice que usará la cuenta de dominio local.)
Neil
10

Ninguna de estas respuestas hizo lo que necesitaba: iniciar sesión en un servidor remoto con una cuenta de dominio diferente de la que estaba conectado en mi máquina local, y es el dominio de un cliente a través de una VPN. ¡No quiero estar en su dominio!

En su lugar, en el cuadro de diálogo Conectar al servidor, seleccione "Autenticación de Windows", haga clic en el botón Opciones y luego en la pestaña Parámetros de conexión adicionales, ingrese

user id=domain\user;password=password

SSMS no lo recordará, pero se conectará con esa cuenta.

Dave
fuente
Esto funcionó para mí en SQL Server Management Studio 2017
natbob1
6

Un poco de magia powershell hará el truco:

cmdkey /add:"SERVER:1433" /user:"DOMAIN\USERNAME" /pass:"PASSWORD"

Luego solo seleccione la autenticación de Windows

maeneak
fuente
1

Para Windows 10: vaya al icono de Sql Management Studio, o acceso directo en el menú: haga clic con el botón derecho> Seleccione Abrir ubicación de archivo

ingrese la descripción de la imagen aquí

Mantenga presionada la tecla Mayús y haga clic con el botón derecho en el acceso directo o en el archivo ssms.exe que se encuentra en la carpeta. Mantener presionada la tecla shift le dará una opción adicional "Ejecutar como usuario diferente":

ingrese la descripción de la imagen aquí

Aparecerá un cuadro de inicio de sesión y puede escribir las credenciales con las que desea que se ejecute su sesión.

cmartin
fuente
0

Hay muchos lugares donde alguien podría querer implementar este tipo de escenario, pero debido a la forma en que funciona la autenticación integrada, no es posible.

Como mencionó gbn, la autenticación integrada utiliza un token especial que corresponde a su identidad de Windows. Existen prácticas de codificación llamadas "suplantación" (probablemente utilizadas por el comando Ejecutar como ...) que le permiten realizar una actividad de manera efectiva como otro usuario de Windows, pero en realidad no hay una manera de actuar arbitrariamente como un usuario diferente (à la Linux) en aplicaciones de Windows aparte de eso.

Si realmente necesita administrar varios servidores en varios dominios, puede considerar uno de los siguientes:

  1. Configure la confianza de dominio entre sus dominios para que su cuenta pueda acceder a las computadoras en el dominio de confianza
  2. Configure un usuario SQL (utilizando autenticación mixta) en todos los servidores que necesita administrar para que pueda iniciar sesión de esa manera; obviamente, esto podría presentar algunos problemas de seguridad y crear una pesadilla de mantenimiento si tiene que cambiar todas las contraseñas en algún momento.

¡Ojalá esto ayude!

Ed Altorfer
fuente
no es posible está mal ... el runas / netonly / user anterior: dominio \ nombre de usuario program.exe funciona bien.
Chris Pierce
-3

La única forma de lograr lo que desea es abrir varias instancias de SSMS haciendo clic derecho en el acceso directo y utilizando la función 'Ejecutar como'.

SQLChicken
fuente
3
¿La única forma? De ningún modo.
Michel de Ruiter