Peço desculpas se esta pergunta repete outra já feita. Eu procurei por horas e não encontrei um que se encaixa na minha situação.
Resultado desejado
Um usuário que usa autenticação SQL possui permissões de execução no Banco de Dados1 no Servidor1 (instância padrão) e é isso. O usuário executa um procedimento armazenado que, como parte de seu processo, acessa o Banco de Dados 2 em Server1 \ Instance2. Eu gostaria que fosse seguro e simples (ambos são importantes).
Mais informações
Minhas credenciais do Windows têm acesso às duas instâncias (que estão no mesmo servidor). Portanto, eu posso executar o procedimento armazenado no meu login sem dificuldade. No entanto, não quero dar ao usuário meu nível de acesso. Também preciso usar um logon SQL, pois o usuário não estará no domínio.
O que eu gostaria seria fornecer ao procedimento armazenado meu nível de acesso apenas para esse procedimento. Como eu sou um administrador de sistema, isso daria ao usuário tudo o que eles precisavam para esse procedimento. Se eu conseguisse isso funcionar, provavelmente criaria uma conta apenas para esse fim, em vez de usar a minha, mas de qualquer forma seria seguro, pois eu controlava o que o proc armazenado faz.
Tentei colocar a instrução "WITH EXECUTE AS" no meu processo armazenado, mas não consegui obter as informações de login do Windows. Quando eu o colocava, recebia o seguinte erro ao compilar o processo armazenado:
Não é possível executar como o usuário 'domínio \ jdoe', porque ele não existe ou você não tem permissão.
O usuário é sysadmin nos dois servidores, como eu disse, então não tenho certeza do que mais ele precisa.
Analisei o seguinte:
- CONFIADO - Prefiro não expor meu banco de dados e isso parece assustador
- Servidor vinculado - não quero dar permissões extras. Não confio no outro banco de dados para ter acesso ao meu banco de dados e não confio no meu banco de dados para ter acesso a todos os outros bancos de dados.
- Certificados - isso parece complicado e difícil. A menos que eu possa encontrar uma maneira muito simples de fazer isso e mantê-lo, não tenho certeza se vale a pena.
- Encadeamento de propriedade - Novamente, assustador. Parece que isso causa mais problemas de segurança quando meu objetivo é evitar problemas de segurança.
- Usuário espelhado - eu até criei o mesmo usuário (SID diferente, obviamente) na outra instância do servidor e dei a mesma senha. Não vá.
Sinto que estou perdendo algo óbvio, mas não tenho certeza do que é. Desde que eu bati minha cabeça contra a parede o dia todo com isso, provavelmente estou muito perto para vê-lo. Eu apreciaria muito se alguém aqui pudesse me dar uma mão ou me apontar na direção certa. Eu direi que li muitos artigos do MSDN (cara, eu os odeio - eles nunca parecem me dizer o que eu quero saber). O que eu realmente gostaria é de um tutorial simples e fácil de seguir, que me mostra como fazer isso. Além disso, mesmo uma indicação geral da direção que preciso seguir seria útil.
