我在为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;\";"
我得到的错误是:
包错误[连接管理器" \ test-0 \ finance \ Test Expenses \ New Test Files \ Test.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方面的经验。请原谅我糟糕的格式。我也刚刚学习这个网站。感谢。
答案 0 :(得分:1)
为了比较,这是来自connectionstrings.com的字符串
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES";
我已重新格式化如下(忽略嵌入的白页)
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=
c:\myFolder\myExcel2007file.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-0\finance\Test Expenses\New Test Files\Test.xlsx 1"
看起来user :: folder和usr :: file按预期工作
我不确定您是如何构建连接字符串的,但是您确定在最后一行嵌入引号的方式是正确的,即,您是否应该使用'“'或”“”来表示嵌入式报价?
IIRC,IMEX = 1通常是关于xls文件的好主意
ADDED
好的,如果您正在构建,则应该显示硬编码的字符串结果。基于你展示的所有基于参数的东西,我认为你必须以某种方式在代码中构建它。这意味着billinkc在他的评论中可能是正确的:UNC路径。