繁体   English   中英

允许用户从SQL执行BCP导出命令的最安全方法是什么?

[英]What is the most secure way to allow users to execute BCP export command from SQL?

我目前正在这样一种环境中工作,即从手动运行的SQL脚本中以编程方式导出表的功能将有很大的帮助。

从脚本执行导出将是从存储过程中运行整个过程的第一步,因此我必须能够启动从SQL的导出。

该组织当前在大多数服务器上具有以下配置-

  • SQL Server 2005或2008
  • xp_cmdshell-已禁用
  • 启用 CLR

最终,我希望能够通过以下参数调用过程,并使其执行导出。

  • 表名
  • 文件路径/名称(在网络共享上)
  • 文件格式

就功能而言,当前BCP似乎是一个完美的选择,但是由于禁用了xp_cmdshell,我无法通过命令行调用它。

该组织规模很小,为实现安全解决方案而感到高兴,到目前为止,我的印象是他们对安全性拥有良好的控制水平。 他们做出了一个全面的决定来禁用xp_cmdshell,但是如果我可以提出一种允许使用它的安全方法,我认为他们会很容易接受。

在我的研究中,我同时遇到了“ EXECUTE AS”功能和使用证书签署程序的问题,但是如果这两种方法都可以帮助我实现所需的目标,则仍然无法解决。

另外,如果您有另一种解决方案可以让我获得相同的最终结果,我将不胜感激!

正如Aaron Bertrand指出的那样,问题是禁用了xp_cmdshell。

您可以考虑两种选择。

  1. 使用BULK INSERT 需要INSERT和ADMINISTER BULK OPERATIONS权限

  2. 创建一个类型为“ Operating System(CmdExec)”的SQL Agent作业以运行BCP。 您可能需要代码来创建/更新用于传递参数的作业。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM