【问题标题】:Export sql query results to excel file on the go随时随地将 sql 查询结果导出到 excel 文件
【发布时间】:2016-02-29 18:10:47
【问题描述】:

我将查询结果保存到 SQL Server 2008 中的表 my_table 中,然后想将表中的数据插入到 excel 2007 文件中。以下是我正在使用的查询-

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
'Excel 8.0;Database=C:\testing.xls;', 
'SELECT Name, Date FROM [Sheet1$]') 
SELECT a, b FROM my_table
GO 

显示以下错误

Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'Microsoft.Jet.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.

我怎样才能解决这个问题?附:我的系统上似乎启用了临时分布式查询。

【问题讨论】:

  • 确保您已启用Ad Hoc Distributed Queries。请注意,这是一个服务器范围的设置。如果您的 SQL Server 是 64 位,还请查看this 问题。 Here 是有人使用较新的提供者的问题。
  • 打开testing.xls 并查询表格有什么好处吗?拉而不是推?
  • @BaconBits Ad Hoc Distributed Queries 选项似乎已在我的系统上启用。我已经用显示配置的快照更新了问题。
  • @Dick Kusleika 我不确定这是否是完成这项工作的最佳方式。如果您有建议,请发表评论!

标签: sql-server excel


【解决方案1】:

您需要在查询之前运行它:

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.Jet.OLEDB.4.0', N'DynamicParameters', 1
GO

如果需要,请在查询后将此值设置为 0。 如果运行 64 位服务器,则需要使用 Microsoft.ACE.OLEDB.12.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多