0

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

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

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

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

最终,我希望能够调用传递以下参数的过程并让它执行导出。

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

目前 BCP 在功能方面似乎是一个完美的选择,但由于 xp_cmdshell 被禁用,我无法通过命令行调用它。

该组织规模很小,并且很高兴为安全解决方案而努力,到目前为止,我的印象是他们对安全性有很好的控制。他们已经做出了禁用 xp_cmdshell 的全面决定,但如果我能提出一种安全的方法来允许使用它,我认为他们会很容易接受。

在我的研究中,我遇到了“EXECUTE AS”功能以及带有证书的签名程序,但仍然无法确定任何一种方法是否可以帮助我实现我想要的。

此外,如果您有其他解决方案可以让我实现相同的最终结果,我会全力以赴!

4

1 回答 1

0

正如 Aaron Bertrand 指出的那样,问题在于 xp_cmdshell 已禁用。

您可以考虑两种选择。

  1. 使用批量插入。需要 INSERT 和 ADMINISTER BULK OPERATIONS 权限

  2. 创建类型为“操作系统(CmdExec)”的 SQL 代理作业以运行 BCP。您可能需要代码来创建/更新作业以传递参数。

于 2012-10-29T18:39:57.047 回答