我制作了一个控制台C#app,我在其中生成SQL以在表info_table中插入一行然后执行它。当我在SSIS中使用相同的C#代码(当然需要进行必要的修改)时,我收到一条错误消息,指出无法找到该表。
Error: System.Reflection.TargetInvocationException: Exception has
been thrown by the target of an invocation.
---> System.Data.SqlClient.SqlException: Invalid object name 'info_table'.
我知道我的数据库中有一个info_table,它可以在控制台应用程序中运行。所以,我尝试在我的SSIS C#脚本中使用完全限定名称,而不仅仅是info_table,错误就消失了。为什么会发生这种情况,我该如何解决?我怀疑我的SSIS连接字符串是否有问题。
我的SSIS连接字符串(连接管理器是ADO.NET类型) -
Data Source=.;User ID=admin;Initial Catalog=MaximDB;Persist
Security Info=True;Application Name=SSIS-DataReader-{555000d
ddd-aaa-bbb-cccceee}LocalHost.MaximDB.admin;
我的控制台应用连接字符串 -
"server=(local);database=MaximDB;integrated security=SSPI;";
要连接数据库的C#对象 -
对于控制台C#app -
SqlConnection conn = new SqlConnection(consoleString);
对于SSIS C#脚本 -
String ssisDbConnMgr = "SAMPLE_DB";//Name of the connection
manager in SSIS, an ADO.NET type
ConnectionManager connMgr;
SqlConnection databaseConn;
SqlCommand sqlCmd;
connMgr = Dts.Connections[ssisDbConnMgr];
databaseConn = (SqlConnection)connMgr.AcquireConnection(Dts.Transaction);
sqlCmd = new SqlCommand();
答案 0 :(得分:0)
听起来桌子没有使用默认架构(即“dbo”之外的东西)。