MS SQL Server 2012... com backups noturnos de bancos de dados no mesmo/local da máquina SQL Server...
Estou tentando adicionar outro trabalho do SQL Server Agent para copiar os arquivos .bak para compartilhamento remoto (não Windows, ou seja, Linux) com credenciais de usuário/senha não Windows (não AD). Não tenho acesso para configurar ou alterar esse acesso que está sob controle de outras pessoas bastante remotas.
Para isso (cópia), criei um usuário local com o mesmo nome de usuário e senha, dei permissões para as pastas de backup (fonte ou local) nas quais tudo funciona perfeitamente na linha de comando ( Win + К
ou cmd
) se inserir o comando manualmente:
RUNAS /user:UserName /savecred "robocopy d:\SQLBACKUP \\10.195.xx.yyy\backup /S /purge /MAXAGE:7 /MT:1 /Z"
mas falha ao executar como tarefa do SQL Server Agent (o tipo de etapa é " Operating System(CmdExec)
". SQL Service Agent (com configuração padrão de execução sob [NT Service/SQLServiceAgent]
conta, a tarefa pertence ao SA
superusuário do SQL Server).
Alguém pode me explicar por que está falhando e como fazê-lo funcionar corretamente (levando em consideração que não tenho acesso à configuração dos usuários do domínio)?
Para responder à pergunta específica de por que está falhando, é que a conta de serviço em seu servidor não tem as permissões corretas para acessar o compartilhamento.
Eu tenho um ambiente onde tenho 2 servidores que não estão em um domínio. Usando
SQL Server Agent
proxies é a maneira que eu resolvi isso.Eu tenho uma conta especial que uso para as 2 máquinas (Suas contas com o mesmo nome e senha) que tive que adicionar às credenciais de nível de instância (em segurança no explorador de objetos do SSMS) (consulte o artigo do MSDN "Criar uma credencial" ) e adicione um proxy de agente no sistema operacional (CmdExec) .
Uma vez criados, você pode selecionar a conta para executar (o nome que você deu ao seu proxy) e ele funcionará. No entanto, isso é em 2008 e não joguei muito com o agente de 2012.
Ainda deve funcionar da mesma forma.
Em seguida, você usaria sua linha robocopy "robocopy d:\SQLBACKUP \10.195.xx.yyy\backup /S /purge /MAXAGE:7 /MT:1 /Z" como seu comando (eu uso xcopy, mas funciona da mesma forma).
Outra maneira de copiar arquivos para o computador em rede é usar as credenciais de domínio do computador de origem - https://dba.stackexchange.com/a/128282/51798