Conectar usuário do Windows diferente no SQL Server Management Studio (2005 ou posterior)

333

Existe uma maneira no SQL Server Management Studio 2005 (ou posterior) de alterar o usuário de Autenticação do Windows (como você poderia no SQL Server 2000 e versões anteriores)?

Esta é a caixa de diálogo geral de propriedades da conexão (observe o UID / PWD acinzentado ao selecionar Autenticação do Windows):

diálogo

FYI - Uma solução alternativa é usar, runasmas estou procurando uma solução que me permita trabalhar com várias contas do Windows em vários servidores (e em vários domínios).

Matt P.
fonte
2
Tanto quanto eu sei, Run As ... é a única maneira de conseguir isso. Por que você não pode usar Executar como ... e apenas iniciar uma sessão diferente do estúdio de gerenciamento para cada usuário?
DCNYAM
4
RunAs só funciona se você estiver no mesmo domínio e / ou floresta. Se você é consultor, nunca está no mesmo domínio e / ou floresta, portanto, esse seria um recurso interessante.
Eric
Eu posso sentir você, Eric. Às vezes, uso VMs com clientes para que a máquina virtual possa fazer parte do domínio / floresta do cliente e me permita trabalhar um pouco mais perfeitamente, mas se você estiver trabalhando ativamente com vários domínios, isso pode ser entediante.
Ed Altorfer
6
Vários domínios é um caso de uso. Outro são os Serviços do Windows que efetuam login com sua própria conta de serviço e um desenvolvedor que deseja verificar a conectividade, permissões, etc. do SQL. Parece que estou sem sorte. . . pelo menos temos runas.
Matt P.

Respostas:

418

Embora não haja como se conectar a vários servidores como usuários diferentes em uma única instância do SSMS, o que você está procurando é a seguinte sintaxe do RUNAS:

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

Ao usar a opção "/ netonly", você pode fazer login usando credenciais remotas em um domínio do qual você não seja membro atualmente, mesmo que não haja confiança configurada. Apenas informa às runas que as credenciais serão usadas para acessar recursos remotos - o aplicativo interage com o computador local como o usuário conectado no momento e interage com os computadores remotos como o usuário cujas credenciais você forneceu.

Você ainda teria que executar várias instâncias do SSMS, mas pelo menos poderia se conectar como diferentes usuários do Windows em cada uma.


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

SqlRyan
fonte
28
Se você deseja o mesmo domínio, mas um usuário diferente, solte a opção / netonly.
jimconstable
5
A coisa sobre o switch netonly é absolutamente dourada. Tantos cenários que eu precisava desse. Obrigado.
Jivko Petiov
7
+1 para a maneira mais conveniente de fazer isso no momento. Ainda está além do ridículo que a MS não possa simplesmente dobrar uma caixa de diálogo de login no estilo MSTSC / área de trabalho remota no SSMS e configurá-la por conexão.
Paul Smith
7
Uau! netonly! Fantástico. É meio engraçado, porém, que quando ele estiver em execução, quando você tentar se conectar a um servidor remoto com autenticação do Windows, ele exibirá o usuário local, não o usuário netonly. Faz com que pareça mágica quando se liga ...
TTT
2
A resposta abaixo do user175017 funcionou para mim, parece muito mais fácil e permite conexões do Windows específicas do servidor em uma sessão do SSMS. Em resumo, no Win 7, execute o "Credential Manager" e adicione credenciais do Windows para <servername>: 1433, onde <servername> é a máquina do SQL Server, totalmente qualificada (como MyServer.MyCompany.Com).
David Korn
161

Mantenha shiftpressionado e clique com o botão direito do mouse no ícone do estudo do SQL Server Mangement. Você pode executar como outro usuário da conta do Windows.

Suresh
fonte
31
Infelizmente, isso não funciona quando a conta está em outro domínio / rede - retorna nome de usuário / senha inválidos. O comando acima funciona independentemente da conta estar em outra rede.
Jerad Rose
11
Isso funcionou para mim! No meu caso, tenho duas contas no mesmo domínio.
Tathagata
Funciona no Windows 10.
wrkwrk
Trabalhou para mim em um domínio diferente.
Tahir Hassan
11
Como executar como outro usuário da conta do Windows e como administrador ?
Kanjet
116

Outra maneira que descobri é ir para "Iniciar"> "Painel de controle"> "Nomes de usuário e senhas armazenados" (Ferramentas administrativas> Credential Manager no Windows 7) e adicionar a conta de domínio que você usaria com o comando "runas" .

Em seguida, no SQL Management Studio 2005, basta selecionar a "Autenticação do Windows" e inserir o servidor ao qual você deseja se conectar (mesmo que o usuário que você vê em cinza ainda seja o usuário local) ... e funcione!

Não me pergunte o porquê! :)

Editar: certifique-se de incluir ": 1433" após o nome do servidor no Credential Manager ou ele pode não se conectar devido à falta de confiança no domínio.

dagronlund
fonte
10
Honestamente, essa resposta deve ser marcada. A solução runas não funcionou para mim e criou uma dor de cabeça porque o smss não gosta de iniciar no console, o que acontece quando você invoca o smss. E mesmo que isso parasse de acontecer, ainda não funcionava. Mas o Gerenciador de credenciais> Adicionar uma credencial do Windows funcionou. Digite o nome do servidor, seu DOMÍNIO \ nome de usuário e a senha. Assim como ele diz, ele ainda MOSTRA o usuário local, mas se conecta de qualquer maneira.
Brian Arsuaga
16
Pode ser necessário usar sqlserver.domain.com:1433 como o endereço de rede. Veja stackoverflow.com/questions/6944933
Greg Bray
7
Na verdade, isso funcionou para mim, parece muito mais fácil e permite conexões de janelas específicas do servidor em uma sessão do SSMS. Acabei de executar o "Credential Manager" e adicionei credenciais do Windows para <servername>: 1433, onde <servername> é a máquina do SQL Server, totalmente qualificada (como MyServer.MyCompany.Com).
David Korn
11
O runasmétodo não funcionou para mim, mas funcionou. Inicialmente, tentei sem as informações da porta no Credential Manager, mas ainda não consegui efetuar login. Quando adicionei as informações da porta no Credential Manager, elas funcionaram como um encanto. Muito obrigado por isso!
René
11
Essa pode ser a solução mais elegante. Funciona no Windows 8.1 para eu me conectar a uma instância autônoma do SQL 2012 que nem faz parte de um domínio. <servername>: 1433
Tim Lehner
10

O runas /netonly /user:domain\username program.execomando só funcionou para mim emWindows 10

  • salvando-o como um arquivo em lotes
  • executando-o como administrador,

ao executar o lote de comandos como usuário comum, obtive o problema de senha incorreto mencionado por alguns usuários nos comentários anteriores.

Ricardo Mercado
fonte
Isso funcionou para mim também, sem relação de confiança entre domínios. Consegui iniciar o SSMS e conectar-me a um servidor SQL usando a conta de outros domínios (apesar de na interface do usuário dizer que usará a conta de domínio local.
Neil
10

Nenhuma dessas respostas fez o que eu precisava: Entre em um servidor remoto usando uma conta de domínio diferente da que estava conectado na minha máquina local e é o domínio de um cliente através de uma VPN. Eu não quero estar no domínio deles!

Em vez disso, na caixa de diálogo conectar ao servidor, selecione "Autenticação do Windows", clique no botão Opções e, na guia Parâmetros adicionais de conexão, insira

user id=domain\user;password=password

O SSMS não se lembrará, mas se conectará a essa conta.

Dave
fonte
Isso funcionou para mim no SQL Server Management Studio 2017
natbob1
6

Um pouco de mágica do PowerShell fará o truque:

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

Em seguida, basta selecionar a autenticação do Windows

Maeneak
fonte
Essa foi a pista para mim, obrigado!
David Cumps
1

Para Windows 10: Vá para o ícone do Sql Management Studio ou atalho no menu: Clique com o botão direito do mouse> Selecionar Abrir local do arquivo

insira a descrição da imagem aqui

Mantenha a tecla Shift pressionada e clique com o botão direito do mouse no arquivo de atalho ou ssms.exe que está na pasta. Manter a tecla Shift lhe dará uma opção extra "Executar como usuário diferente":

insira a descrição da imagem aqui

Isso abrirá uma caixa de login e você poderá digitar as credenciais nas quais deseja que sua sessão seja executada.

cmartin
fonte
Dica incrível, obrigado! Resolveu o meu problema;)
Hallaghan 03/04
0

Existem muitos lugares onde alguém pode querer implantar esse tipo de cenário, mas devido à maneira como a autenticação integrada funciona, isso não é possível.

Como o gbn mencionado, a autenticação integrada usa um token especial que corresponde à sua identidade do Windows. Existem práticas de codificação chamadas "representação" (provavelmente usadas pelo comando Executar como ...) que permitem realizar efetivamente uma atividade como outro usuário do Windows, mas não há realmente uma maneira de agir arbitrariamente como um usuário diferente (à la Linux) em aplicativos do Windows além disso.

Se você realmente precisar administrar vários servidores em vários domínios, considere um dos seguintes:

  1. Configurar confiança de domínio entre seus domínios para que sua conta possa acessar computadores no domínio confiante
  2. Configure um usuário SQL (usando autenticação mista) em todos os servidores que você precisa administrar para poder efetuar logon dessa maneira; obviamente, isso pode apresentar alguns problemas de segurança e criar um pesadelo de manutenção se você precisar alterar todas as senhas em algum momento.

Espero que isso ajude!

Ed Altorfer
fonte
não é possível está errado ... o runas / netonly / user acima: domain \ username program.exe funciona bem.
Chris Pierce
-3

A única maneira de conseguir o que você deseja é abrir várias instâncias do SSMS clicando com o botão direito do mouse no atalho e usando o recurso 'Executar como'.

SQLChicken
fonte
3
O único jeito? De modo nenhum.
Michel de Ruiter 11/11