AMO代码处理SSAS多维数据集的问题

0
我在SSIS的脚本组件中写了一段代码去处理SSAS的Cube:
Partition p = mg.Partitions;
Partition p1 = mg.Partitions.FindByName(mg.Name + "_" + dtEnd.ToString("yyyy-MM-dd"));
string sql = ((QueryBinding)p.Source).QueryDefinition.ToString();
string sql_now = sql.Replace("2000-01-01", dtEnd.ToString("yyyy-MM-dd"));
if (p1 != null)
p1.Drop();
p1 = mg.Partitions.Add(mg.Name + "_" + dtEnd.ToString("yyyy-MM-dd"));
p1.StorageMode = StorageMode.Molap;
p1.ProcessingMode = ProcessingMode.Regular;

p1.Source = new QueryBinding(db.DataSourceViews.DataSourceID, sql_now);
p1.Update(UpdateOptions.ExpandFull);
//p1.ErrorConfiguration.KeyNotFound = ErrorOption.ReportAndContinue;
p1.Process(ProcessType.ProcessFull);

为什么加上p1.ErrorConfiguration.KeyNotFound = ErrorOption.ReportAndContinue 这段代码就会报错:
错误: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.NullReferenceException: 未将对象引用设置到对象的实例。
在 ST_9bca6304427a48fd9d2a2da63602c5e0.csproj.ScriptMain.Main()
--- 内部异常堆栈跟踪的结尾 ---
在 System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
在 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
在 System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
在 Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()
而注释掉就正常了呢?
已邀请:
1

Donny 2013-08-10 回答

已经解决了,将代码p1.ErrorConfiguration.KeyNotFound = ErrorOption.ReportAndContinue;
p1.Process(ProcessType.ProcessFull);
修改为
ErrorConfiguration ec = new ErrorConfiguration();
ec.KeyNotFound = ErrorOption.ReportAndContinue;
p1.Process(ProcessType.ProcessFull,ec);
就可以正常运行了。。。不知道为什么原因。。。。奇怪。

要回复问题请先登录注册