如何在不使用cmdshel的情况下将SQL查询的结果存储到特定文件夹中的XML文件

时间:2018-06-28 17:49:46

标签: sql-server xml

我有一个SQL Server查询,并且我正在使用FOR XML PATH来将结果生成为XML。我正在尝试将文件result.xml保存到计算机的特定文件夹中,但是我不想使用SQL Server的“另存为”链接来执行此操作,因为我需要使过程自动化。

很不幸,我没有使用这里提供的xp_cmdshell解决方案,因为我没有这样做的权限。实际上我得到一个错误

  

对对象'xp_cmdshell',数据库'mssqlsystemresource',模式'sys'的EXECUTE权限被拒绝

每次我尝试执行它。

有人可以帮我吗?非常感谢!

2 个答案:

答案 0 :(得分:0)

美好的一天,

像往常一样,有很多解决方案取决于您的知识和资源。我会在这里尝试给您一些想法,也许其他人可以添加更多

  1. 使用SQLCLR,您可以简单地创建一个文件并将其保存(这需要使用PERMISSION_SETUNSAFE)
  2. 使用Python(与SQLCLR基本相同,我们可以使用Python进行所有操作,包括外部任务)。
  3. 您提到您最初不想使用xp_cmdshell,但是在简短讨论之后,我了解到您根本无法成功使用它,但这是您的首选。 Check this thread on the same topic. ,您应该在那里找到有关如何配置权限的解决方案。
  4. 使用sp_send_dbmail可以将查询结果发送到电子邮件。 与其他选项不同,该选项通常在大多数服务器中都是打开的。这个想法是发送简单的电子邮件,然后使用Google Apps可以阅读电子邮件的内容并创建文件。 例如,您可以使用以下方法::GmailApp.getInboxThreads,getMessages(),getRawContent()...,为了将文件写入Google驱动器,可以使用DriveApp.createFile
  5. 使用SSIS

答案 1 :(得分:0)

按照您的建议,我花了一些时间来学习如何使用C#来解决我的问题,现在它可以完美地工作了!我创建了一个简短的脚本,该脚本使用xml路径执行sql查询,然后设法将生成的XML文件保存在特定的库中。再次感谢您的支持。因此,我的过程现已完全自动化。总是很高兴了解更多信息!