27.03.2013, 12:46 | #1 |
Enjoy!
|
ax2009, CLR-функция
Привет коллеги, помогите разобраться.
У меня на SQL есть табличная CLR-функция, которая принимает параметры (@startDate и @endDate). Условно назовем её dbo.GetTransactions. Пример вызова: select DATE, CODE, COMPANY, TRANSACTIONS from dbo.GetTransactions('2013-02-01', '2013-02-28'); Структура таблицы в SQL. DATE - дата (тип поля - date) CODE - код ресторана в RKeeper (тип поля - int) COMPANY - код компании (nvarchar(255)) TRANSACTIONS - количество чеков (int) Пытался сделать через Statement так: X++: static void test_getSQLData_v2(Args _args) { UserConnection connection; Statement stmt; SqlStatementExecutePermission sqlStatementExecutePermission; TransDate fromDate = 01\02\2013, toDate = 28\02\2013; Str _sql; ResultSet resultSet; ; try { _sql = strfmt("select DATE, CODE, COMPANY, TRANSACTIONS from dbo.GetTransactions('%1', '%2')", date2str(fromDate, 321, 2, 3, 2, 3, 4), date2str(toDate, 321, 2, 3, 2, 3, 4)); connection = new Connection(); connection.ttsbegin(); sqlStatementExecutePermission = new SqlStatementExecutePermission(_sql); sqlStatementExecutePermission.assert(); stmt = connection.createStatement(); resultSet = stmt.executeQuery(_sql); connection.ttscommit(); stmt.close(); CodeAccessPermission::revertAssert(); while(resultSet.next()) { print resultSet.getString(1); } } catch(Exception::Error) { error(_sql); error(stmt.getLastErrorText()); } } Подскажите, правильно ли копаю. |
|
27.03.2013, 12:56 | #2 |
Enjoy!
|
Ошибка вываливается на моменте resultSet = stmt.executeQuery(_sql);
Сбой запроса на разрешение типа "SqlStatementExecutePermission". (S)\Classes\SqlStatementExecutePermission\demand (S)\Classes\Statement\executeQuery (C)\Jobs\N_TurnoverGetSQLData_v2 - line 23 |
|
27.03.2013, 13:29 | #3 |
Участник
|
Попробуйте выполнить код на сервере: http://msdn.microsoft.com/en-us/library/bb190039.aspx
|
|
27.03.2013, 13:44 | #4 |
Enjoy!
|
К сожалению не помогло, но спасибо за помощь!
|
|
27.03.2013, 13:45 | #5 |
Участник
|
ошибка та же?
|
|
27.03.2013, 13:48 | #6 |
Enjoy!
|
Да. 1 в 1.
|
|
27.03.2013, 13:52 | #7 |
Enjoy!
|
подменяю запрос на простой типа select * from dbo.LedgerTrans, аналогичная штука.
|
|
27.03.2013, 13:52 | #8 |
Участник
|
Коллстек должен быть другим - с буковкой (S)
|
|
27.03.2013, 14:34 | #9 |
Enjoy!
|
|
|
27.03.2013, 14:53 | #10 |
Участник
|
Было
(S)\Classes\SqlStatementExecutePermission\demand (S)\Classes\Statement\executeQuery (C)\Jobs\N_TurnoverGetSQLData_v2 - line 23 Должно быть (S)\Classes\SqlStatementExecutePermission\demand (S)\Classes\Statement\executeQuery (S)\Jobs\N_TurnoverGetSQLData_v2 - line 23 Это значит, что оно действительно стало выполняться на сервере |
|
|
За это сообщение автора поблагодарили: iCloud (2). |
27.03.2013, 15:20 | #11 |
Enjoy!
|
Спасибо огромное, все заработало, да проблема была именно с (S) выполнением!
|
|
Теги |
clr |
|
|