如何在动态表中使用SSIS插入recid?

时间:2013-04-29 11:21:31

标签: ssis x++ dynamics-ax-2012 axapta

如何在动态Ax表SSIS中插入recId?

3 个答案:

答案 0 :(得分:5)

答案 1 :(得分:3)

如果要使用SSIS将记录直接插入SQL数据库,则无法在运行中轻松地从SQL操作中轻松获取RecId,因此另一个选项是在x ++作业或服务中使用x ++保留recid,例如:

static void ReserveRecs(Args _args)
{
    systemSequence seq;

    seq = new SystemSequence();
    if (seq)
    {
        // Suspend automatic recId allocation.
        Seq.suspendRecIds(tableName2id("TableName"));
        //Change the number below to reflect the amount of recid's you want reserved.
        info(int642str(seq.reserveValues(1, tableName2id("TableName"))));
        Seq.removeRecIdSuspension(tableName2id("TableName"));
    }
}

此作业将采用一个表,并保留一个系统将忽略/跳过的recId。需要注意的是,如果你意外地保留了一个庞大的数字,那么恢复这些预订并不容易,而int64确实有一个限制(尽管数量巨大)。

您可以在x ++中创建一个服务,您可以从SSIS作业中获取一个服务,在该作业中您可以告诉表名和保留金额,然后返回int64,这样就可以自动执行SSIS作业。

答案 2 :(得分:0)

在这篇文章中解释了如何维护Number Sequence表以插入RecId,尽管这是一个危险的操作,必须始终避免它。

http://sumitsaxfactor.wordpress.com/2011/04/01/handling-recids-in-sql-server/