Sql server 将数据从SQL Server查询导出到excel

Sql server 将数据从SQL Server查询导出到excel,sql-server,security,export-to-excel,Sql Server,Security,Export To Excel,我想将数据从查询导出到excel文件。我知道这里有很多这样的问题,但在我的情况下没有一个是可以接受的 例如,与使用OPENROWSET的本主题类似: 它只有在我自己创建testing.xls时才能成功执行,并且还定义了将从此excel文件中的查询导出的列数。否则,将发生错误:提供的值的列名或数量与表定义不匹配 我还在这里尝试另一种解决方案:使用Exec master..xp\u cmdshell 这确实有效,但我听说xp_cmdshell对SQL Server是一个巨大的安全威胁。所以,也许我不

我想将数据从查询导出到excel文件。我知道这里有很多这样的问题,但在我的情况下没有一个是可以接受的

例如,与使用OPENROWSET的本主题类似:

它只有在我自己创建testing.xls时才能成功执行,并且还定义了将从此excel文件中的查询导出的列数。否则,将发生错误:提供的值的列名或数量与表定义不匹配

我还在这里尝试另一种解决方案:使用Exec master..xp\u cmdshell

这确实有效,但我听说xp_cmdshell对SQL Server是一个巨大的安全威胁。所以,也许我不应该用它


我还有别的办法可以试试吗?

如果您正在寻找一个快速而肮脏的解决方案,您可以使用Management Studio本身

以下是步骤:

  • 编写查询并运行它
  • 右键单击结果窗格并选择“将结果另存为…”
  • 选择您的文件夹/文件名,并确保在下面选择了CSV类型
  • 现在使用Excel打开您的CSV文件;如果合适,将其保存在Excel中,作为本机Excel格式
如果您需要编程解决方案,那么这对您没有帮助,在这种情况下,您必须使用Microsoft(Microsoft.Office.Interop.Excel)或第三方解决方案;你甚至可以

如果您需要TSQL解决方案,您在问题中提到的OPENROWSET应该可以

您可以使用Excel only解决方案,并使用Excel本身中的“数据”窗格导入数据(从SQL server导入)

taht不必与SQL Server或Excel本身耦合的另一种可能性是。但是,我不喜欢Powershell,所以如果您喜欢这种方法,您必须进行更多的研究


另外,这本书有点过时,但很有趣。

请尝试使用较新版本的Excel。从您的查询来看,您似乎正在使用Excel 97–此版本中可能存在大量错误和不兼容

如果这没有帮助,其他选项包括: -像Ozren建议的那样,从SSSM手动执行此操作 -尝试为此创建SSIS包

这里有几个其他的线程让你开始


您尝试过任何解决方案吗?我希望TSQL解决方案在我的存储过程中执行,因此这些解决方案与我的请求不匹配。请检查此问题的答案是否适用于您:我需要TSQL解决方案,使用OPENROWSET,我需要自己创建excel文件,为其定义列,否则我会得到错误:提供的值的列名或数量与表定义不匹配。
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=D:\testing.xls;', 
'SELECT * FROM [SheetName$]') select * from SQLServerTable