|
|
#1 |
|
Участник
|
Доброго времени суток!
Столкнулся со следующей проблемой в 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();Последний раз редактировалось Raven13; 29.01.2012 в 10:58. |
|
|
| Теги |
| execute, set nocount on, sql server |
|
|
|