SSIS OLEDB连接的动态连接字符串出错



我在为SSIS OLEDB连接构建动态连接字符串时遇到了问题。SSIS包被设计为遍历网络文件夹中的xlsx文件。该包从文件中提取数据,并将其加载到3个不同的SQL 2008R2数据库表中。

这是我试图在SSIS OLEDB连接中用作表达式的连接字符串:

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::Folder] + @[User::File] + ";Extended Properties="Excel 14.0 Xml;IMEX=1;HDR=YES;";"

得到的错误是:

Package [Connection manager " Test -0financeTest ExpensesNew Test FilesTest.xlsx 1"]出错:连接字符串组件不能包含未加引号的分号。如果值必须包含分号,请将整个值用引号括起来。当连接字符串中的值包含未加引号的分号时,例如InitialCatalog属性,会发生此错误。

我希望另一双眼睛能看到我错过的一些简单的东西。在我看来是对的!

编辑:这里是我尝试过的其他一些连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0; Data Source= + @[User::File] + ";Extended Properties="Excel 12.0 Xml; IMEX=1; HDR=YES";"
"Provider=Microsoft.ACE.OLEDB.12.0;"Data Source=" + @[User::Folder] + @[User::File] + "";"Extended Properties="Excel 12.0 Xml";"HDR=YES";"IMEX=1""
Provider=Microsoft.ACE.OLEDB.12.0;Data Source= + @[User::File] + "; Extended Properties=" Excel 12.0 Xml; HDR=YES ";"
Provider=Microsoft.ACE.OLEDB.12.0;Data Source= + @[User::File] + "; Extended Properties="Excel 14.0 Xml;IMEX=1;HDR=YES";"
Provider=Microsoft.ACE.OLEDB.12.0;Data Source= + @[User::File] + ";Extended Properties="Excel 12.0 Xml;IMEX=1;HDR=YES";"
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source= + @[User::File] + ";Extended Properties="Excel 14.0 Xml;IMEX=1;HDR=YES;""
Provider=Microsoft.ACE.OLEDB.12.0;Data Source= + @[User::File] + ";Extended Properties=\"Excel 12.0 Xml;IMEX=1;HDR=YES\";"
Provider=Microsoft.ACE.OLEDB.12.0;Data Source= + @[User::Folder] + @[User::File] + ";Extended Properties="Excel 14.0 Xml;IMEX=1;HDR=YES;";"
Provider=Microsoft.ACE.OLEDB.12.0;Data Source= + @[User::Folder]+@[User::File] + ";Extended Properties="Excel 14.0 Xml;IMEX=1;HDR=YES;";"
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::File] + ";Extended Properties="Excel 12.0;HDR=YES";""
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::File] + "; Extended Properties="Excel 12.0 Xml; HDR=YES";
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::File] + ";Extended Properties=""Excel 12.0 Xml;IMEX=1;HDR=YES;""
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::Folder] + @[User::File] + "; Extended Properties="Excel 12.0 Xml;HDR=YES";
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @[User::Folder] + @[User::File] + ";Extended Properties="Excel 14.0 Xml;IMEX=1;HDR=YES;";"

编辑:如果有一些其他的信息会有帮助,请让我知道。我什么都愿意尝试。事实上,我正在重建整个项目。我是SSIS的新手。我有系统背景,有开发和SQL方面的经验。请原谅我糟糕的格式。我也在学习这个网站。谢谢。

作为比较,下面是来自connectionstrings.com的字符串

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:myFoldermyExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES";

我已经重新格式化如下(忽略嵌入的白页)

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
  c:myFoldermyExcel2007file.xlsx;
  Extended Properties="Excel 12.0 Xml;HDR=YES";

当我重新格式化你的字符串,我得到

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" 
    + @[User::Folder]+@[User::File] 
    + ";Extended Properties="Excel 14.0 Xml;IMEX=1;HDR=YES;";"

基于你的错误信息

"test-0financeTest ExpensesNew Test FilesTest.xlsx 1"

看起来user::folder和usr::file工作正常

我不确定你是如何建立你的连接字符串,但你确定你是在最后一行嵌入引号的方式是正确的,即,你应该使用' ' '或""来表示嵌入引号吗?

IIRC, IMEX=1通常是xls文件的好主意

添加

好的,如果您正在构建by,您应该已经显示了硬编码的字符串结果。基于你展示的所有基于参数的东西,我认为你必须以某种方式在代码中构建它。这意味着billinkc在评论re: the UNC path中可能是正确的。

最新更新