Eu tenho um SQL Server (2000, 2005 e 2008) e gostaria de usar o SQL Agent (ou mesmo um simples banco de dados de backup 'xxx' para disco = 'aaa'), para fazer backup em unidades remotas.
Ou seja: eu tenho uma unidade mapeada na máquina SQL, por exemplo: "M:" que mapeia para \\ otherbox \ someshare
Por padrão, o SQL Server não permitirá que você faça backup dessas unidades, mas acho que há uma maneira de habilitar isso. Alguém pode me indicar os documentos?
Desde já, obrigado.
sql-server
backup
mappeddrive
Martin Marconcini
fonte
fonte
Respostas:
Use o caminho UNC ao especificar o destino - o SQL Agent não tem um conceito de "unidades" mapeadas.
Além disso, o SQL Agent geralmente é executado como "Serviço Local" ou "Sistema Local" e, como tal, não possui direitos para compartilhamentos remotos em outros computadores.
Você tem algumas opções:
Execute o SQL Agent como uma conta de função no domínio. Conceda a essa conta permissão para gravar no diretório / compartilhamento em que você deseja que os backups sejam armazenados.
Execute o SQL Agent como "Serviço de Rede". Ele será autenticado no servidor de compartilhamento com a conta do computador do domínio da máquina na qual o serviço está sendo executado. Conceda a essa conta permissão para gravar no diretório / compartilhamento em que você deseja armazenar o backup.
Se você não tiver um domínio, crie uma conta com o mesmo nome de usuário e senha na máquina que hospeda o SQL Agent e na máquina que hospeda os arquivos de backup. Altere o SQL Agent para executar como essa conta de "função" e conceda permissão a essa conta para gravar no diretório / compartilhamento em que você deseja armazenar o backup. (O "domínio do pobre" ...)
fonte
Eu concordo totalmente com as duas respostas sobre o caminho UNC.
Eu também gostaria de acrescentar que, mesmo com unidades mapeadas, você tem uma solução simples. Você pode executar um backup em qualquer uma das unidades normais do seu servidor. E então você pode adicionar
Comando SQL para o trabalho ou script SQL que você executa.
Com o xp_cmdshell, você pode fazer ainda mais - por exemplo, executar uma ferramenta de linha de comando de arquivamento externo, como 7z, para compactar o arquivo antes de copiá-lo na unidade mapeada (quando a conexão remota estiver muito lenta ...)
PS: Esqueci de mencionar que o xp_cmdshell pode ser ativado e desativado usando a ferramenta Surface Area Configuration e executando sp_configure (e, por padrão, está desativado)
fonte
Seu agente precisa acessar os compartilhamentos de rede. Eles não precisam ser mapeados previamente.
Você faz assim:
Acredito que, se o usuário que possui o trabalho for um sqs sysadmin, ele será executado sob o agente, caso contrário, será executado como um usuário não sysadmin.
fonte
Se o SQL Server não for executado em uma conta de domínio, você poderá mapear uma unidade de rede para a conta sqlserver (não sua conta), conforme descrito nesta resposta do stackoverflow
Primeiro, você precisa ativar o xp_cmdshell
Em seguida, você pode mapear uma unidade usando:
Finalmente, você pode fazer backup para essa unidade mapeada:
fonte
Lembre-se de que o SQL Server é muito intolerante a atrasos na rede. Se eles ocorrerem e tendem a ocorrer, o backup falhará. Eu não recomendo esta prática para ambientes de produção.
Melhor fazer backup localmente e depois copiar.
fonte
A maneira mais fácil é criar uma unidade .vhd em um compartilhamento de rede por meio do gerenciamento de disco e atribuir uma letra de unidade a ela. O SQL pode acessar esta unidade sem nenhuma modificação.
Basta adicionar um script diskpart.exe ao agendador na inicialização para anexar automaticamente na reinicialização.
exemplo, selecione vdisk file = "\ {endereço IP / servidor} {networkhare} {filenamep.vhd}" anexar vdisk // lembra a última letra de unidade atribuída a.
fonte