powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / loopback server + The server failed to resume the transaction
15 сообщений из 40, страница 2 из 2
loopback server + The server failed to resume the transaction
    #40106172
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MSMS - Microsoft Server Managment Studio.
aleks222
Диана Орел

Еще дополню: отдельно операция TRUNCATE в процедуре вызывается из пользовательского приложения без ошибки.

Отдельно от чего?
Если убрать операцию INSERT, то процедура отрабатывает.
Описание: Ведется лог работы процедуры. 1) фиксируется начало работы 2) сама работа 3)фиксируется результат работы
Код процедуры.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
ALTER proc [dbo].[SALES_WRITEBACK_INVEST_COUNT_ALL]
 @HIERARCHY_CC_ID TINYINT,
 @PROC_ID BIGINT
 AS
SET XACT_ABORT ON;
BEGIN TRANSACTION
DECLARE @SESS_NO INT, @STEP_ID TINYINT, @INSERT_NUMBER_ROWS INT = 0, @RESULT_STRING NVARCHAR(MAX),  @REZ INT

exec [dbo].[REGISTRY_NEW_STEP] N'Transform Opening plan.SALES', @PROC_ID, @SESS_NO OUTPUT, @STEP_ID OUTPUT /*1*/

SET XACT_ABORT OFF;

begin try /*2*/
--TRUNCATE TABLE ODI_OUT.dbo.T_INVEST_COUNT_ALL 
DELETE FROM ODI_OUT.dbo.T_INVEST_COUNT_ALL

INSERT 
  INTO ODI_OUT.dbo.T_INVEST_COUNT_ALL
  (
    MONTH_ID ,
    MVZ_ID ,
    CFO_ID ,
    FRMT_ID ,
    SUBFRMT_ID ,
    ACCOUNT_ID ,
    HYPE_VERSION_ID ,
    DATA ,
    SESSION_ID 
  ) 
SELECT 1,1,1,1,1,1,1,1,@SESS_NO
  
SET @INSERT_NUMBER_ROWS = @@ROWCOUNT

select  @REZ = case 
	  when  T1.SUM_TARGET +  T2.SUM_SOURCE>0 then ROUND(T1.SUM_TARGET-T2.SUM_SOURCE, 0, 1)
	  else -1  
	  end 
FROM
(SELECT SUM(DATA) as SUM_TARGET from ODI_OUT.dbo.T_INVEST_COUNT_ALL where session_id = @SESS_NO ) T1,
(SELECT SUM(DATA) as SUM_SOURCE from dbo.T_SALES_OUT_STAGE where session_id = @SESS_NO) T2



IF  @REZ <> 0  
THROW 51000, N'Transform with errors. Summs did not match', 1;


end try
begin catch
 select @RESULT_STRING = cast(ERROR_LINE() as nvarchar(20)) + ': ' + ERROR_MESSAGE()   
end catch

SET XACT_ABORT ON;

EXEC DBO.UPDATE_STEP_DETAILS @SESS_NO, @STEP_ID, @INSERT_NUMBER_ROWS, @RESULT_STRING /*3*/

COMMIT TRANSACTION
GO




Права у пользователя, который запускал процедуру в MSMS
orel_da; create table; CREATE PROCEDURE; EXECUTE (только процедуры)
Права у пользователя, который запускал процедуру через Приложение посмотреть не могу, я не админ. Выходит сообщение
авторCannot execute as the database principal because the principal "guest" does not exist, this type of principal cannot be impersonated, or you do not have permission.
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106175
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана - единственный юзер в этом странном мире, который называет SSMS -> MSMS
Вы лудшая"! Все у вас по лучиться, не сдавайтесь
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106177
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел,

приведите полное сообщение об ошибке, в обработчике есть номер строки процедуры.
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106180
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Диана Орел,

приведите полное сообщение об ошибке, в обработчике есть номер строки процедуры.


Ошибка возникает при запуске процедуры из пользовательского приложения. Поэтому, не наю, поможет ли

Traceback (most recent call last):
File "E:\Users\orel_da\workspace\FirstJythonProj\IntegOpt.py", line 21, in <module>
fdmAPI.executePLSQL(sqlTxt, [80, proc_id], True)
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258)

at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:256)

at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:108)

at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:28)

at com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:2519)

at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(SQLServerConnection.java:2524)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.commit(SQLServerConnection.java:2683)

at com.hyperion.aif.scripting.API.executePLSQL(API.java:196)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

com.microsoft.sqlserver.jdbc.SQLServerException: com.microsoft.sqlserver.jdbc.SQLServerException: The server failed to resume the transaction. Desc:7d00000001.
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106185
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел
Владислав Колосов
Диана Орел,

приведите полное сообщение об ошибке, в обработчике есть номер строки процедуры.


Ошибка возникает при запуске процедуры из пользовательского приложения. Поэтому, не наю, поможет ли

Traceback (most recent call last):
File "E:\Users\orel_da\workspace\FirstJythonProj\IntegOpt.py", line 21, in <module>
fdmAPI.executePLSQL(sqlTxt, [80, proc_id], True)
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258)

at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEOF(tdsparser.java:256)

at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:108)

at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:28)

at com.microsoft.sqlserver.jdbc.SQLServerConnection$1ConnectionCommand.doExecute(SQLServerConnection.java:2519)

at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2478)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectionCommand(SQLServerConnection.java:2524)

at com.microsoft.sqlserver.jdbc.SQLServerConnection.commit(SQLServerConnection.java:2683)

at com.hyperion.aif.scripting.API.executePLSQL(API.java:196)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

com.microsoft.sqlserver.jdbc.SQLServerException: com.microsoft.sqlserver.jdbc.SQLServerException: The server failed to resume the transaction. Desc:7d00000001.


Дианка жжот, мы тоже не наем, но тут и java, Python и х.з. что, адвансед среда прямо
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106186
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел, проверьте тип пользователя guest в БД ODI_OUT
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106188
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана, отзовитесь!

Мы начинающие "сиквэльщики" и "мастдайщики", но вот терзают смутные сомнения, что этот вызов "fdmAPI.executePLSQL" - Ораклом отдает,а как вы думаете?
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106191
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел
Если убрать операцию INSERT, то процедура отрабатывает.

Это бред.
Один sql-стейтмент не может влиять на допустимость другого sql-стейтмента.

Как вам уже докладывали

truncate table

требует повышенных полномочий и "простому" пользователю недоступен.
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106192
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел,

не совсем то, это ошибка JDBC.
Должна быть строка, отформатированная как "cast(ERROR_LINE() as nvarchar(20)) + ': ' + ERROR_MESSAGE()"

например: "23:случилось страшное". Если код написан с учетом этой особенности, что ошибка возвращается селектом, а не исключением, то ее можно увидеть в логе.

Возможно, на truncate нет прав у пользователя.
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106193
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел,

авторЕсли убрать операцию INSERT, то процедура отрабатывает
это потому, что транзакция сломана уже перед этим insert.
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106545
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Диана Орел,

авторЕсли убрать операцию INSERT, то процедура отрабатывает

это потому, что транзакция сломана уже перед этим insert. Если один оператор, то ошибка на верх не пробрасывается, не успевает что-ли проброситься. А если 2 оператора подряд, то тогда можно ошибку отловить. Так? А как узнать причину поломки транзакции? Или это все-таки права?
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106546
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин
Диана, отзовитесь!

Мы начинающие "сиквэльщики" и "мастдайщики", но вот терзают смутные сомнения, что этот вызов "fdmAPI.executePLSQL" - Ораклом отдает,а как вы думаете?
Это просто библиотека java написана компанией Oracle, а использовать ее можно с СУБД SQL Server тоже.
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106552
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов,

догадалась под пользователем, у которого ошибка запустить процедуру в SSMS. Вот ошибка:



Msg 3930, Level 16, State 1, Procedure UPDATE_STEP_DETAILS, Line 11 [Batch Start Line 0]
The current transaction cannot be committed and cannot support operations that write to the log file. Roll back the transaction.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
ALTER PROC [dbo].[REGISTRY_NEW_STEP] --создание нового шага (записи)  в таблице лога
@STEP_NAME NVARCHAR(100),
@PROC_ID BIGINT,
@SESS_NO BIGINT OUTPUT,
@STEP_ID TINYINT OUTPUT
AS
BEGIN
DECLARE @LAST_PROC_ID BIGINT
SELECT @LAST_PROC_ID = MAX(PROC_ID) FROM [dbo].[T_SESSION_REGISTRY]
SET @LAST_PROC_ID = COALESCE(@PROC_ID, @LAST_PROC_ID)
SELECT @SESS_NO = MAX(SESSION_ID) FROM [dbo].[T_SESSION_REGISTRY] WHERE PROC_ID = @LAST_PROC_ID
SELECT @STEP_ID = coalesce(MAX(STEP_ID),0)+1 FROM  DBO.T_SESSION_DETAILS WHERE SESSION_ID = @SESS_NO
INSERT INTO DBO.T_SESSION_DETAILS(SESSION_ID, STEP_ID, STEP_NAME, STEP_START, PROC_ID)VALUES(@SESS_NO, @STEP_ID, @STEP_NAME, GETDATE(), @LAST_PROC_ID)
END
GO



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
ALTER PROC [dbo].[UPDATE_STEP_DETAILS] -- обновление инфы по шагу
@SESS_NO BIGINT,
@STEP_ID TINYINT,
@CNT_ROWS INT,
@ER_MSG NVARCHAR(MAX)
AS
BEGIN
--UPDATE LAST STEP 
UPDATE  DBO.T_SESSION_DETAILS
SET STEP_END = GETDATE(), NUMBER_ROWS = @CNT_ROWS, ERROR_MSG = @ER_MSG
WHERE SESSION_ID = @SESS_NO AND STEP_ID = @STEP_ID
END
GO


не пойму, где тут может быть ошибка? я сначала создаю запись шага в таблице DBO.T_SESSION_DETAILS в начале работы процедуры. В конце работы работы процедуры делаю Update этой записи. Я должна была делать commit этой записи прежде чем update делать?

...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106555
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диана Орел,

если имеется возможность правки процедур, то поставьте, где возможно print xact_state(), увидите, после какой строки ломается транзакция.
...
Рейтинг: 0 / 0
loopback server + The server failed to resume the transaction
    #40106558
Диана Орел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов
Диана Орел,

если имеется возможность правки процедур, то поставьте, где возможно print xact_state(), увидите, после какой строки ломается транзакция.


Код: sql
1.
2.
TRUNCATE TABLE ODI_OUT.dbo.T_SALES_PLAN
print xact_state()



после этой строки выдало -1.
Если на DELETE заменяю, то все 1 получаются. Под мои пользователем с TRUNCATE тоже все 1 в состоянии. Значит дело в правах. Спасибо большое за помощь
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / loopback server + The server failed to resume the transaction
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]