AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.01.2012, 10:46   #1  
Raven13 is offline
Raven13
Участник
 
9 / 15 (1) ++
Регистрация: 25.06.2010
Post TimeOut в UserConnection
Доброго времени суток!

Столкнулся со следующей проблемой в DAX2009 SP1, используя класс UserConnection вызываю хранимую процедуру время выполнения, которой в среднем от одной минуты до пяти минут в зависимости от объема данных. Вызов в ахапке выполняется без ошибок, только вот результатов нет. Используя профайлер SQL Server выявил, что вызов хранимой процедуры заканчивается с ошибкой 2 - Abort, хотя если вызвать процедуру из SQL Management Studio выполнение не прерывается.

Так вызываю процедуру используя UserConnection:
X++:
    UserConnection             sqlConnection;
    Statement                     sqlStatement;
    Source                          sqlSource = strfmt("EXEC [dbo].[%1]", _procName);
    SqlStatementExecutePermission sqlPermission;
    ;
    sqlConnection = new UserConnection();
    sqlStatement  = sqlConnection.createStatement();

    sqlPermission = new SqlStatementExecutePermission(sqlSource);
    sqlPermission.assert();

    sqlStatement.executeUpdate(sqlSource);
    sqlStatement.close();

    CodeAccessPermission::revertAssert();
Сейчас удалось решить проблему следующим образом:

X++:
    System.Data.SqlClient.SqlConnection connection;
    System.Data.SqlClient.SqlCommand   command;
    System.Exception  e;
    
    SysSQLSystemInfo   systemInfo =  SysSQLSystemInfo::construct();
    CodeAccessPermission perm = new InteropPermission(InteropKind::ClrInterop);
    ;
    connection = new System.Data.SqlClient.SqlConnection(
        strfmt("Data Source=%1;Initial Catalog=%2;Integrated Security=True",
            systemInfo.getLoginServer(),
            systemInfo.getloginDatabase()));

    command = connection.CreateCommand();

    command.set_CommandText(_procName);
    command.set_CommandType(System.Data.CommandType::StoredProcedure);
    command.set_CommandTimeout(10 * 60);

    try
    {
        connection.Open();
        command.ExecuteNonQuery();
    }
    catch (Exception::CLRError)
    {
        e = ClrInterop::getLastException();
        while(e)
        {
            error(e.get_Message());
            e = e.get_InnerException();
        }
    }
    if (connection.get_State() == System.Data.ConnectionState::Open)
        connection.Close();

    CodeAccessPermission::revertAssert();
Собственно вопрос возможно ли установить Timeout для UserConnection?

Последний раз редактировалось Raven13; 29.01.2012 в 10:58.
Теги
execute, sql server

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: Performance (Timeout) Problem with Microsoft Dynamics AX Enterprise Portal Blog bot DAX Blogs 0 10.10.2011 17:11
emeadaxsupport: Biztalk adapter connections timeout after 1 minute when syncTimeout is zero Blog bot DAX Blogs 0 30.09.2010 00:05
Проблема с UserConnection! foxtrot DAX: Прочие вопросы 2 23.12.2009 21:37
Есть ли в Аксапте какой-нибудь журнал трассировки вызываемых функций? Кирилл DAX: Программирование 9 09.04.2009 16:50
delay=pause=timeout=.. ? slava DAX: Программирование 7 30.09.2002 18:12

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:23.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.