powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
21 сообщений из 21, страница 1 из 1
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682502
YanMalyakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на сервере встроенная функция t-sql EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'SC5197',@LockMode = 'exclusive';
отрабатывает нормально
из 1С 8 нет

Код: 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.
пСтрСоед = "driver={SQL Server};"+"server="+СокрЛП("test1c")+";"+"uid="+СокрЛП(Login)+"; "+"pwd="+СокрЛП(Password)+";"+"Database="+СокрЛП("SMP_2018");
 
GlobalConnection = Новый COMОбъект("ADODB.Connection"); 
GlobalConnection.Provider = "SQLOLEDB"; 
GlobalConnection.ConnectionTimeout = 15; 
GlobalConnection.CommandTimeOut    = 30; 
GlobalConnection.ConnectionString = пСтрСоед; 
GlobalConnection.Open();
GlobalCommand = Новый COMОбъект("ADODB.Command"); 
GlobalCommand.ActiveConnection = GlobalConnection; 
GlobalCommand.CommandType = 1;  ////ставил типы 1, 4,8
GlobalCommand.prepared = "true";
GlobalCommand.namedParameters   = "true";

///Здесь пытаюсь вызвать функцию

GlobalCommand.CommandText = "sp_getapplock"; 

////и пытаюсь передать в неё параметр 

GlobalCommand.Parameters.Append(GlobalCommand.CreateParameter("@LockMode", 200, 3, 16, )); 
GlobalCommand.Parameters(0).value = "exclusive";
GlobalCommand.Execute(); 

///пишет
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Процедура или функция "sp_getapplock" ожидает параметр "@LockMode", который не был указан.

///пробую сделать по другому

GlobalCommand.Parameters.Append(GlobalCommand.CreateParameter("@DbPrincipal", 200, 3, 16,"dbo")); 
GlobalCommand.Parameters.Append(GlobalCommand.CreateParameter("@Resource", 200, 1, 12, "SC5197")); 
GlobalCommand.Parameters.Append(GlobalCommand.CreateParameter("@LockMode", 200, 1, 16, "exclusive")); 
GlobalCommand.Execute(); 
///пишет
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Процедура или функция "sp_getapplock" ожидает параметр "@LockMode", который не был указан.


///и даже вот так 
СтрокаЗапроса =   "BEGIN TRAN;EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'SC5197',@LockMode = 'exclusive';";
GlobalCommand.CommandText = СтрокаЗапроса;
GlobalCommand.Execute(); 
///ошибок не выдает но и результата блокировки тоже нет


//////третий параметр менял с 0 до 4 не помогает
GlobalCommand.Parameters.Append(GlobalCommand.CreateParameter("@LockMode", 200, 1, 16,"exclusive")); 


подскажите пожалуйста как правильно передать LockMode
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682630
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема перенесена по просьбе автора.

Модератор: Тема перенесена из форума "1С".
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682638
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YanMalyakov///ошибок не выдает но и результата блокировки тоже нет
Это единственное, что имеет смысл обсуждать в данном разделе. Как передавать параметры из 1с на сервер, спрашивайте в разделе 1с.

Выполните в студии команду

BEGIN TRAN;EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'SC5197',@LockMode = 'exclusive';exec sp_lock @@spid

Если рузультат не отличается, то проблема опять в 1с, смотрите профайлером, что у вас происходит.
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682639
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так же процедура sp_getapplock возвращает результат, которые неплохо бы проанализировать, когда что-то идет не так.
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682670
YanMalyakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Заработал такой вариант
Код: sql
1.
2.
3.
СтрокаЗапроса =   "BEGIN TRAN;EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'SC2984';" ;

 GlobalCommand.CommandText = СтрокаЗапроса;



Всем спасибо!
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682675
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YanMalyakov,

вам справку запрещают читать?
@LockOwner выставьте и не извращайтесь
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682696
YanMalyakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
еще вопрос, запускаю в студии
что бы снять блокировки
USE SMP_2018;
GO
BEGIN TRAN;
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'SC2984', @LockOwner = 'Transaction' ;
GO

смотрю
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
	SELECT 
		dm_tran_locks1.request_type,
		dm_tran_locks1.resource_database_id,
		dm_tran_locks1.resource_description,
		dm_tran_locks1.request_session_id, 
		dm_tran_locks1.request_status,
		dm_tran_locks1.request_mode,
		dm_tran_locks1.request_owner_type,
		dm_tran_locks1.resource_associated_entity_id
		from  sys.dm_tran_locks as dm_tran_locks1


показывает что блокировки остались не снятыми,правильно ли снимать sp_getapplock с помощью
sp_releaseapplock в таком синтаксисе ?
Код: sql
1.
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'SC2984', @LockOwner = 'Transaction'  ;
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682700
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YanMalyakov,

я вообще не понимаю ваших танцев... Вам запрещено хелп открывать? Моргните.

так не снимет блокировку
BEGIN TRAN;
EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'SC2984', @LockOwner = 'Transaction' ;
GO
EXEC sp_releaseapplock ...
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682703
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блокировку на транзакции можно снять только внутри этой же транзакции или она сам снимется после окончаниия, длоя сессии всё тоже самое
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682706
YanMalyakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,а принудительно нельзя снять блокировку ?
я так подумал логически в начале работы модуля проведения документа
sp_getapplock
перед самым завершением
sp_releaseapplock
https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-releaseapplock-transact-sql?view=sql-server-2017

подскажи как правильно сделать пожалуйста.
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682707
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YanMalyakovTaPaK,а принудительно нельзя снять блокировку ?
я так подумал логически в начале работы модуля проведения документа
sp_getapplock
перед самым завершением
sp_releaseapplock
https://docs.microsoft.com/ru-ru/sql/relational-databases/system-stored-procedures/sp-releaseapplock-transact-sql?view=sql-server-2017

подскажи как правильно сделать пожалуйста.
что значить принудительно? С другой сессии?

авторв начале работы модуля проведения документа
sp_getapplock
перед самым завершением
sp_releaseapplock
больше похоже на сессию, хотя я без понятия как у вас
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682708
YanMalyakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
в 1С в самом документе есть
НачатьТранзакцию(); в начале
между ними
sp_getapplock
перед самым завершением
sp_releaseapplock
а в самом конце ЗафиксироватьТранзакцию();
верно делаю нет ?
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39682711
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YanMalyakovTaPaK,
в 1С в самом документе есть
НачатьТранзакцию(); в начале
между ними
sp_getapplock
перед самым завершением
sp_releaseapplock
а в самом конце ЗафиксироватьТранзакцию();
верно делаю нет ?
похоже на то.
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39683073
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKпохоже на то.
Похоже на то, что нужно сначала ресурс получіть, а потом уже трансакцію начінать.
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39683084
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШыфлПохоже на то, что нужно сначала ресурс получіть, а потом уже трансакцію начінать.
Откуда такая уверенность?
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39683102
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШыфлTaPaKпохоже на то.
Похоже на то, что нужно сначала ресурс получіть, а потом уже трансакцію начінать.
а как получить ресурс = транзакцию до её открытия?

ну и

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
BEGIN TRAN;
EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'SC5197',@LockMode = 'exclusive',  @LockOwner = 'Transaction';

exec sp_lock @@spid

EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'SC5197', @LockOwner = 'Transaction' 

COMMIT TRAN

exec sp_lock @@spid
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39683139
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexШыфлПохоже на то, что нужно сначала ресурс получіть, а потом уже трансакцію начінать.
Откуда такая уверенность?

Простая логика. Трансакция SQL по любому откроется, а вот ресурс получить ещё надо...

Сначала надо вынуть бумажку из ящика и показать всем, что она у вас в руках, а потом уже делать ваши аrхісложные проводки по таблицам. А то вы говорите вслух "я буду делать проводку", а ящик ещё и не отрывали - вдруг там нет ничего. Тогда ваши слова прозвучали зря...
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39683140
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШыфлmsLexпропущено...

Откуда такая уверенность?

Простая логика. Трансакция SQL по любому откроется, а вот ресурс получить ещё надо...

Сначала надо вынуть бумажку из ящика и показать всем, что она у вас в руках, а потом уже делать ваши аrхісложные проводки по таблицам. А то вы говорите вслух "я буду делать проводку", а ящик ещё и не отрывали - вдруг там нет ничего. Тогда ваши слова прозвучали зря...
При чём здесь все эти сравнения? Просто пофилософствовать? sp_getapplock по сути ничего не блокирует. Это объявление, с разной длительностью жизни (транзакция/сессия) которое можно проверить в других сессиях/транзакциях
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39683143
Шыфл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
1C - это про проводки. Ресурсы - это бумажки. А SQL трансакции - это чтобы пріхо і расход пісалісь вместе.
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39683155
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШыфлTaPaK,
1C - это про проводки. Ресурсы - это бумажки. А SQL трансакции - это чтобы пріхо і расход пісалісь вместе.
ох
...
Рейтинг: 0 / 0
на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
    #39683160
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
развели тут 1с-щину, автор сам не понял, зачем ему это надо, а вы его ещё путаете дополнительно.

ТС, чего транзакции то не хватает? если тебе надо другие сессии блокировать в момент пока твоя транзакция работает, то этот код тебя всё равно не спасёт без глобальной переделки твоего клиента 1с
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / на сервере встроенная функция t-sql sp_getapplock отрабатывает корректно,из 1С нет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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