C# SqlConnectionStringBuilder在SSIS包中失败

C# SqlConnectionStringBuilder在SSIS包中失败,c#,sql-server,ssis,script-task,C#,Sql Server,Ssis,Script Task,我在生产中有几个SSIS包,它们使用SqlConnectionStringBuilder连接到SQL Server数据库。直到大约10天前,这些软件包还可以正常工作,我们没有对Prod进行任何更改。然后,突然,软件包开始出现故障,错误被忽略 连接字符串格式无效。它必须由一个或多个以分号分隔的x=y形式的组件组成 当我尝试调试脚本任务时,脚本任务总是在以下情况下失败: string connstring = Dts.Variables["User::Static"].GetSensitiveVal

我在生产中有几个SSIS包,它们使用SqlConnectionStringBuilder连接到SQL Server数据库。直到大约10天前,这些软件包还可以正常工作,我们没有对Prod进行任何更改。然后,突然,软件包开始出现故障,错误被忽略

连接字符串格式无效。它必须由一个或多个以分号分隔的x=y形式的组件组成

当我尝试调试脚本任务时,脚本任务总是在以下情况下失败:

string connstring = Dts.Variables["User::Static"].GetSensitiveValue().ToString();
//MessageBox.Show(connstring);
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(connstring);
builder.ConnectTimeout = 1800;
从错误消息中,我似乎传递了一个空白连接字符串,但事实并非如此。我已经将连接字符串硬编码到静态变量,这样它就不会动态构建(显然是为了测试和解析目的)

此方法的替代方法是什么?我还可以做些什么来解决此问题?感谢您的帮助

编辑:

进一步挖掘之后,我发现它正试图在数据库上执行存储的proc

SqlCommand command = new SqlCommand("[dbo].[GetdataALL]", sqlConn);
                    command.CommandTimeout = 1800;
                    command.CommandType = CommandType.StoredProcedure;
                    command.Parameters.AddWithValue("@Columns1", Dts.Variables["User::Columns"].Value.ToString());
                    command.Parameters.AddWithValue("@Where_ID", Dts.Variables["User::WhereID"].Value.ToString());
                    command.ExecuteNonQuery();
失败的可能原因是什么?
谢谢。

是否只有在调试时才会出现此错误?如果是这样,您需要将保护级别更改为EncryptSensitiveWithPassword。检查霍奇霍德森的答案


如果你知道全部情况,就没有必要使用生成器。只有一个字符串可以工作。这个DTS变量是如何设置的?通过环境变量?敏感变量可能在升级或数据库迁移过程中丢失(至少根据我的经验)。尝试再次设置。我尝试在脚本任务中再次设置变量,但仍然在同一点失败。现在就试试基思的建议。不管怎样都不走运。它在SqlCommand行上失败(编辑了上面的问题并提供了更多详细信息)。为什么不使用Execute SQL Task呢?