none
SQL xp_cmdshell(Movimentar pastas) RRS feed

  • Pergunta

  • Boa tarde,

    Estou precisando muito da ajuda de vocês, preciso realizar movimentação de pastas usando o SQL Server 2005, já habilitei o xp_cmdshell, porem quando tento realizar a movimentação de uma pasta que esta fora da estação onde esta o SQL Server, parece a mensagem de acesso negado, estudei uma pergunta parecida com a minha no fórum, porem não consegui entender com faço para liberar acesso de Administrador para o SQL realizar esta tarefa.

    EXEC Banco..xp_cmdshell 'MOVE 

    \\Servidor\PastaUser\login \\Servidor\PastaUser\backupLogin\'

    Preciso que esta movimentação de pasta seja realizada pelo SQL Server, por que esta função será chamada após a atualização de alguns registros no Banco de Dados

    Por favor, me ajudem

     

    Desde já agradeço a colaboração


    • Editado Carlos_rodrigues terça-feira, 16 de julho de 2013 18:29 correção
    • Movido Fábio Jr terça-feira, 16 de julho de 2013 23:49 Dúvida sobre xp_cmdshell
    terça-feira, 16 de julho de 2013 17:23

Respostas

  • Carlos,

    Você está acessando um caminho UNC (\\server\pasta). Este caminho está compartilhado? Quais são as permissões de compartilhamento?

    Compartilhe a pasta no Server1 e certifique-se que as permissões de compartilhamento estão adequadas (parecidas mas diferentes das NTFS).

    Compartilhe a pasta no Server2 e certifique-se que as permissões de compartilhamento estão adequadas (parecidas mas diferentes das NTFS).

    Veja como funcionam as permissões NTFS, SMB e NFS:

    http://technet.microsoft.com/en-us/library/cc753731.aspx

    Depois testa novamente por favor.

    Abs,


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 20:08
    Moderador

Todas as Respostas

  • Lendo a documentação, lá está escrito que a conta utilizada pelo xp_cmdshell é a conta de serviço do SQL Server.

    Pergunta? Esta conta tem permissões adequadas na origem e destino da movimentação?


    Ref.:

    xp_cmdshell (Transact-SQL)

    http://msdn.microsoft.com/pt-br/library/ms175046.aspx


    Fábio de Paula Junior


    • Editado Fábio Jr terça-feira, 16 de julho de 2013 23:48 mover forum
    terça-feira, 16 de julho de 2013 23:46
  • Bom dia, Fabio!

    Usei o comando abaixo para criar o usuário para executar o xp_cmdshell, usuário utilizado no exemplo abaixo esta criado no AD e possui o grupo de Administrador com permissão para deletar as pasta no diretório, ainda não conseguir    fazer funcionar o comando  EXEC Banco..xp_cmdshell 'MOVE  \\Servidor\PastaUser\login  \\Servidor\PastaUser\backupLogin\'

     EXEC sp_xp_cmdshell_proxy_account 'exemplo\login','senha'

      Help!

     

    quarta-feira, 17 de julho de 2013 14:05
  • Carlos,

    Você tem que adicionar a permissão do usuário que esta conectado no XP_CMDShell na pasta que você deseja gravar os dados.

    Esta credencial que você criou para rodar no XP_CMDShell tem que esta definida nas permissões e também no compartilhamento da pasta.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 19 de julho de 2013 16:50
    Moderador
  • Boa tarde, Junior!

     Realizei o teste com a forma que você mencionou, configurei o usuário usando no comando XP_CMDShell, adicionei este mesmo usuário na permissão da pasta, mesmo desta forma o SQL continua informando a mensagem de acesso negado.

    O SQL tem mesmo esta possibilidade de deletar uma pasta em uma estação diferente que esteja no mesmo domínio?

     Grato!

    Carlos Junior


    segunda-feira, 22 de julho de 2013 17:58
  • Carlos,

    Por favor, em caráter de teste, coloque permissão de modify nos diretórios para Everyone.

    Se funcionar, saberemos que é permissão NTFS que precisa ser revista com cuidado. Se não funcionar, vai ser necessário verificar nos logs o motivo da falha.

    Testa lá e retorna pra gente por favor.


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 01:23
    Moderador
  • Luis,

    O usuário criado para ser usado no XP_CMDShell  tem permissão full na pasta e no diretorio, o problema é que quando executado o comando atraves do SQL para deletar a pasta, aparece a mensagem de acesso negado.

    Help!


    terça-feira, 23 de julho de 2013 14:33
  • Caro Carlos,

    Por favor, faça o teste com a permissão em Everyone.

    Passa pra gente o resultado de:

    EXEC master..xp_cmdshell 'set username'

    Obrigado,


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 15:40
    Moderador
  • Luis,

    Realizei o teste com o comando passado, apareceu a seguinte mensagem "Environment variable "Login" not defined"

    segundo o google tradutor "Variável de ambiente "Login" não definido"

    antes já tinha criado o usuário para xp_cmdshell, usando o comando

    EXEC sp_xp_cmdshell_proxy_account 'exemplo\login','senha'

    Poderia me ajudar!

    Desde já agradeço pela ajuda

    terça-feira, 23 de julho de 2013 17:18
  • Cara, 

    Se você já usou a sp_xp_cmdshell_proxy_account, então está definindo qual será o usuário de contexto, ou seja, quem está executando o cmdshell. Se este usuário tem as permissões corretas na pasta, deve funcionar.

    Faça o teste em outra pasta e nas permissões NTFS você desmarca a opção Permitir que permissões herdadas do pai se propaguem para este objeto. Depois ajuste as permissões de Full Control para o usuário e teste.

    Abs,


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 19:03
    Moderador
  • Luis,

    Realizei teste continuo com o problema, verifiquei que este erro de acesso negado só ocorre quando o caminho da pasta esta em outra estação diferente da onde esta o SQL Server mesmo que o usuário tenho permissão na pasta.

    teria alguma configuração para o SQL fazer acesso remoto?

    terça-feira, 23 de julho de 2013 19:54
  • Carlos,

    Você está acessando um caminho UNC (\\server\pasta). Este caminho está compartilhado? Quais são as permissões de compartilhamento?

    Compartilhe a pasta no Server1 e certifique-se que as permissões de compartilhamento estão adequadas (parecidas mas diferentes das NTFS).

    Compartilhe a pasta no Server2 e certifique-se que as permissões de compartilhamento estão adequadas (parecidas mas diferentes das NTFS).

    Veja como funcionam as permissões NTFS, SMB e NFS:

    http://technet.microsoft.com/en-us/library/cc753731.aspx

    Depois testa novamente por favor.

    Abs,


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 23 de julho de 2013 20:08
    Moderador
  • Luiz,

    Verifiquei a materia no link, mais ainda estou sem solução

    quarta-feira, 24 de julho de 2013 16:30
  • Carlos,

    Vamos lá, qual é a conta que esta configurada no serviço que esta rodando o seu SQL Server.

    Faça um teste, altere a conta de execução para administrador, faça logon no seu SQL Server através de Windows Authentication e tente rodar o xp_cmdshell.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 2 de agosto de 2013 23:10
    Moderador
  • Carlos, por favor, poste um print das permissões de compartilhamento. Abs!

    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    domingo, 11 de agosto de 2013 04:29
    Moderador
  • Caro Carlos,

    Por favor, retorna pra gente poder encerrar a thread.

    Abs!


    Luiz Mercante
    MCITP SQL 2008 | MCTS SQL 2008 | MTA Database Fundamentals | MCTS Windows Apps | MCTS Windows Network | MCP 2003
    sqldicas@outlook.com
    http://sqldicas.com.br
    Se a resposta foi útil de alguma forma, classifique como resposta ou vote como útil.

    terça-feira, 13 de agosto de 2013 01:02
    Moderador
  • Luiz,

    Peço desculpas de não ter respondido antes, neste período e acabei saindo de ferias da empresa, e não pode fazer os teste, agradeço muito pela ajuda.

    Abraço,

    Carlos

     

    domingo, 25 de maio de 2014 23:49