none
Permissões para o BCP não-SA RRS feed

  • Pergunta

  • Estou usando o BCP para gerar arquivos de textos com resultados de consultas.

    Até ai tudo bem, funcionando corretamente.

    Porém só consigo utilizar a comando quando estou logado como SA.

    Como posso dar permissões (e quais) para não precisar estar logado como SA? Até achei alguns post's na internet, mas são para versões antigas e estão incompletos.

    Eis a versão do banco e do bcp:

    Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64)
    Jun 17 2016 19:14:09
    Copyright (c) Microsoft Corporation
    Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: )

    BCP - Bulk Copy Program for Microsoft SQL Server.
    Copyright (C) Microsoft Corporation. All Rights Reserved.
    Version: 12.0.5000.0


    Tytto

    terça-feira, 25 de outubro de 2016 15:50

Respostas

  • Tytto,

    Somente usuários com permissão de system administrator podem fazer uso da xp_cmdshell!!!

    A mensagem de erro apresenta justamente esta falta de permissão.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 27 de outubro de 2016 13:30
  • Eu uso o BUlK Insert, tive um problema uma vez e isso resolveu

    ALTER AUTHORIZATION ON DATABASE::NomeBanco TO [sa];


    Wesley Neves

    • Marcado como Resposta Tytto terça-feira, 1 de novembro de 2016 15:01
    terça-feira, 25 de outubro de 2016 16:48
  • Tytto,

    Poderia postar o código ou mensagem de erro?

    Você tem alguma conta de usuário que possui acesso de database owner ao banco de dados que você esta utilizando?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Tytto terça-feira, 1 de novembro de 2016 15:01
    terça-feira, 25 de outubro de 2016 17:06
  • A mensagem é essa:

    Msg 229, Level 14, State 5, Procedure xp_cmdshell, Line 1
    The EXECUTE permission was denied on the object 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.

    A questão que não podemos dar permissões de sysadmin a esse usuário "só" por esse motivo.


    Tytto

    • Marcado como Resposta Tytto terça-feira, 1 de novembro de 2016 15:01
    terça-feira, 25 de outubro de 2016 17:51
  • Desde já obrigado pela ajuda, mas o problema não é a tradução da mensagem em si, mas o fato que não podemos dar direitos admin para o usuário.

    A dúvida, a necessidade, é de poder dar alguma permissão específica desse recurso para um usuário não-admin.


    Tytto

    • Marcado como Resposta Tytto terça-feira, 1 de novembro de 2016 19:27
    terça-feira, 1 de novembro de 2016 15:10
  • Tytto,

    Se por acaso você pegar o resultado do processamento da xp_cmdshell direcionar para uma tabela e esta for acessado por este usuário que você deseja.

    Talvez isso possa ser uma alternativa.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Tytto sexta-feira, 4 de novembro de 2016 17:28
    quinta-feira, 3 de novembro de 2016 13:41

Todas as Respostas

  • Eu uso o BUlK Insert, tive um problema uma vez e isso resolveu

    ALTER AUTHORIZATION ON DATABASE::NomeBanco TO [sa];


    Wesley Neves

    • Marcado como Resposta Tytto terça-feira, 1 de novembro de 2016 15:01
    terça-feira, 25 de outubro de 2016 16:48
  • Tytto,

    Poderia postar o código ou mensagem de erro?

    Você tem alguma conta de usuário que possui acesso de database owner ao banco de dados que você esta utilizando?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Tytto terça-feira, 1 de novembro de 2016 15:01
    terça-feira, 25 de outubro de 2016 17:06
  • A mensagem é essa:

    Msg 229, Level 14, State 5, Procedure xp_cmdshell, Line 1
    The EXECUTE permission was denied on the object 'xp_cmdshell', database 'mssqlsystemresource', schema 'sys'.

    A questão que não podemos dar permissões de sysadmin a esse usuário "só" por esse motivo.


    Tytto

    • Marcado como Resposta Tytto terça-feira, 1 de novembro de 2016 15:01
    terça-feira, 25 de outubro de 2016 17:51
  • Tytto,

    Somente usuários com permissão de system administrator podem fazer uso da xp_cmdshell!!!

    A mensagem de erro apresenta justamente esta falta de permissão.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quinta-feira, 27 de outubro de 2016 13:30
  • Desde já obrigado pela ajuda, mas o problema não é a tradução da mensagem em si, mas o fato que não podemos dar direitos admin para o usuário.

    A dúvida, a necessidade, é de poder dar alguma permissão específica desse recurso para um usuário não-admin.


    Tytto

    • Marcado como Resposta Tytto terça-feira, 1 de novembro de 2016 19:27
    terça-feira, 1 de novembro de 2016 15:10
  • Tytto,

    Se por acaso você pegar o resultado do processamento da xp_cmdshell direcionar para uma tabela e esta for acessado por este usuário que você deseja.

    Talvez isso possa ser uma alternativa.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Marcado como Resposta Tytto sexta-feira, 4 de novembro de 2016 17:28
    quinta-feira, 3 de novembro de 2016 13:41
  • Mais uma vez, obrigado pela ajuda.

    Na verdade eu preciso que um usuário sem privilégios administrativos execute um procedure que vai gerar um arquivo de texto com dezenas de milhares de linhas. Essa procedure é quem chama/consome o xp_cmdshell e precisa ser acessível/executável por esse usuário não-admin.

    Dessa forma, direcionar o resultado para uma tabela ou arquivo não seria problema, mas sim executar o objeto xp_cmdshell de maneira implícita (chamando via procedure) ou explicita (diretamente executado).


    Tytto

    sexta-feira, 4 de novembro de 2016 17:28
  • Tytto,

    Neste caso o cenário fica totalmente limitado.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 9 de novembro de 2016 12:54