C# 当以任何帐户(我的本地帐户除外)登录时,Excel不会使用OPENROWSET插入任何数据
我正试图通过一个c#winforms应用程序将数据从SQL Server导出到Excel。应用程序正在windows域环境中运行 以下是查询:C# 当以任何帐户(我的本地帐户除外)登录时,Excel不会使用OPENROWSET插入任何数据,c#,sql-server,winforms,export,openrowset,C#,Sql Server,Winforms,Export,Openrowset,我正试图通过一个c#winforms应用程序将数据从SQL Server导出到Excel。应用程序正在windows域环境中运行 以下是查询: string exportQuery = @"INSERT INTO OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database=C:\temp\ExportedCategoryTotals.xls; HDR=YES' , 'SELECT * FROM [Sheet1$] AS f') " +
string exportQuery = @"INSERT INTO OpenRowSet('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database=C:\temp\ExportedCategoryTotals.xls; HDR=YES' , 'SELECT * FROM [Sheet1$] AS f') " +
"SELECT category AS Category, counter AS Counter, date AS Date, locationname AS Location FROM categoryData " +
"WHERE locationName IN ('" + locationBox.SelectedItem.ToString() + "')" +
" AND date BETWEEN CAST('" + startDate + "' AS DATETIME)
AND CAST('" + endDate + "' AS DATETIME) ORDER BY locationName, date, counter DESC";
当我以自己的身份(登录到域上的用户帐户)(在我的c#应用程序中)运行此查询时,一切都会正常运行,数据会从SQL Server导出到excel
当我像其他人一样运行此查询时。该文件不包含任何数据。编译器没有错误
我尝试创建与当前用户的ad用户匹配的登录,并为该用户分配域管理员帐户的凭据。但同样的结果
使用Procmon可以显示:
非常感谢您的帮助。SQL Server服务帐户是否有权访问
C:\Temp
?而且,像你所做的那样将你的价值观串联起来很少是个好主意;它很可能会被注入。如果它认为电子表格已经打开:?@Larnu:我必须连接这些值,因为OpenRowSet不允许参数化查询是的,这是正确的,但这并不意味着你不应该在可能的情况下进行参数化,或者使用QUOTENAME
。查看有关如何分配权限的说明。只有您或设计应用程序的人员才能知道应用程序以何种登录方式连接SQL Server。我无法访问您的应用程序配置设置来告诉您这一点。