使用OPENDATASOURCE的SQL Server动态SQL“引用地狱”

时间:2013-01-29 12:40:18

标签: excel quotes dynamic-sql

我想构建一个从Excel文件中检索数据的参数化SQL查询。

Excel文件的名称每年都会更改。

以下是在T-SQL中运行良好的查询(在SQL Server 2008 R2 Express上):

SELECT * INTO MobilityData FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=\\UNCPath\Annual_Mobility_Update\DAM2013-3.xls;Extended Properties=Excel  8.0')...
[Sheet1$]

(UNC路径是一个网络UNC路径,工作正常)

字符串'DAM2013-3.xls'将逐年变化。我想做的是执行一个参数化的存储过程并动态构建Dyanamic SQL ...

这样的事情:

SELECT @sQry='SELECT * INTO MobilityData FROM OPENDATASOURCE(''''Microsoft.Jet.OLEDB.4.0',
'Data Source=\\sgstore\Shared\operations\DM\Annual_Mobility_Update\''' 
+ @XLFileSource + ';Extended Properties=Excel 8.0'')...[Sheet1$]'

但我似乎在引用地狱,无法将其编译。

我该怎么做才能解决这个问题?

我会感激任何提示,鱼竿,甚至整条鱼等

由于 菲利普

1 个答案:

答案 0 :(得分:1)

这是固定代码。希望这个帮助

SELECT @sQry='SELECT * INTO MobilityData FROM OPENDATASOURCE(''''Microsoft.Jet.OLEDB.4.0'',''Data Source=\\sgstore\Shared\operations\DM\Annual_Mobility_Update\''' 
+ @XLFileSource + ';Extended Properties=Excel 8.0'')...[Sheet1$]'