SQL ServerdynamicSQL“报价地狱”与OPENDATASOURCE

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

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$] 

(UNCpath是一个networkingUNCpath,工作正常)

string“DAM2013-3.xls”将同比变化。 我想要做的就是执行一个参数化的存储过程,并在飞行中build立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$]' 

但我似乎在地狱里,不能得到它编译。

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

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

感谢Philip

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

 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$]'