从Axapta中的X ++ Job启动SQL作业

时间:2014-01-17 13:20:05

标签: axapta x++ microsoft-dynamics ax

我想触发从AX作业运行SSIS包的SQL作业,我成功运行SQL代码,通过为作业创建菜单项从SQL表中获取一些记录,并让它在服务器上运行而不是客户端,但以下代码运行没有错误,但作业没有启动?

CODE:

    static void TriggerAllocation(Args _args)
{
    UserConnection userConnection;
    Statement statement;
str sqlStatement;
SqlSystem sqlSystem;
SqlStatementExecutePermission sqlPermission;
;

sqlSystem = new SqlSystem();

sqlStatement = "EXEC MSDB.dbo.sp_start_job @Job_Name = 'MyJob'";

userConnection = new UserConnection();
statement = userConnection.createStatement();
sqlPermission = new SqlStatementExecutePermission(
sqlStatement);
sqlPermission.assert();

statement.executeQuery(sqlStatement);

CodeAccessPermission::revertAssert();

我找不到任何更多的线索,例如eventviewer,SQL记录出了什么问题..

亲切的问候,

麦克

[更新]感谢Alex K我解决了它!

使用

statement.executeUpdate(sqlStatement); 

而不是

 statement.executeQuery(sqlStatement);

做了伎俩!

请记住,直接从AX运行作业不会起作用,尽管: server static void 您必须使用属性RunOn = Server

创建一个类型为action的菜单项

Menu Item

2 个答案:

答案 0 :(得分:2)

我应该把我的评论作为答案,但没有注意:

尝试server static void Trigger...,也许statement.executeUpdate(...)代替executeQuery

答案 1 :(得分:1)

不支持从executeQuery调用EXEC。

看到这个问题:

How to get the results of a direct SQL call to a stored procedure?