【发布时间】:2015-01-28 12:00:37
【问题描述】:
我有一个每天运行的 SSIS 包,它处理给定目录中的 CSV 文件。每个 CSV 文件包含约 2000 行,每行只有一列包含 10 或 11 个字符的字符串。该包将数据插入到记录集中,遍历行并为每行调用最多两个存储过程。
通常情况下,每天只有一个 CSV 文件在相关目录中,因此将处理大约 2000 行。我又添加了 10 行,总共有 20,000 到 25,000 行。当包运行时,它在最后约 2000 行期间抛出了以下错误:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidOperationException: ERROR - unable to allocate an environment handle.
at System.Data.Odbc.OdbcHandle..ctor(SQL_HANDLE handleType, OdbcHandle parentHandle)
at System.Data.Odbc.OdbcConnection.CreateStatementHandle()
at System.Data.Odbc.OdbcCommand.GetStatementHandle()
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader, Object[] methodArguments, SQL_API odbcApiMethod)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior, String method, Boolean needReader)
at System.Data.Odbc.OdbcCommand.ExecuteNonQuery()
at ST_5d19344133644426ade9d7b3f8a994c2.csproj.ScriptMain.Main()
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
一些快速谷歌搜索表明此错误与可用内存问题有关,但我无法真正理解它。
所以,我有一些问题:
1) 在尝试调用存储过程的上下文中,此错误的真正含义是什么?
2) 我将包的数据流缓冲区 DefaultBufferSize 设置保留为默认值(如果我记得的话,为 10 MB),但我被告知 SSIS 会根据需要更改大小和最大行数?这有关系吗?
【问题讨论】:
标签: sql-server stored-procedures ssis sql-server-2008-r2 odbc