![]() |
|
на сервере встроенная функция t-sql sp_getapplock отрабатывает нормально в 1С нет | ☑ | ||
---|---|---|---|---|
0
Яшка Копытин
02.08.18
✎
13:17
|
на сервере встроенная функция t-sql EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'SC5197',@LockMode = 'exclusive';
отрабатывает нормально из 1С 8 нет пСтрСоед = "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 |
|||
1
sitex
naïve
02.08.18
✎
13:37
|
(0) Я могу ошибаться , но попробуйте так GlobalCommand.Execute("И сюдать СтрокаЗапроса");
|
|||
2
sitex
naïve
02.08.18
✎
13:39
|
(1) + Как пример GlobalCommand.EXECUTE("SELECT @@VERSION")
|
|||
3
Яшка Копытин
02.08.18
✎
13:46
|
(0)
Ошибка при вызове метода контекста (Execute) GlobalCommand.Execute("EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'SC5197',@LockMode = 'exclusive';COMMIT TRAN;") ; по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Процедура или функция "sp_getapplock" ожидает параметр "@LockMode", который не был указан. на самом сервере Выполнение команд успешно завершено. |
|||
4
Яшка Копытин
02.08.18
✎
13:47
|
(1) и (2)
Ошибка при вызове метода контекста (Execute) GlobalCommand.Execute("EXEC sp_getapplock @DbPrincipal = 'dbo', @Resource = 'SC5197',@LockMode = 'exclusive';COMMIT TRAN;") ; по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Процедура или функция "sp_getapplock" ожидает параметр "@LockMode", который не был указан. на самом сервере Выполнение команд успешно завершено. |
|||
5
sitex
naïve
02.08.18
✎
13:50
|
(4) Убери -> '
|
|||
6
sitex
naïve
02.08.18
✎
13:58
|
смотри вообщем тут https://msdn.microsoft.com/ru-ru/library/ms188332(v=sql.120)
|
|||
7
Яшка Копытин
02.08.18
✎
14:07
|
(5) сделал так
GlobalCommand.Execute("EXEC sp_getapplock ; bPrincipal = ""dbo"", @Resource = ""SC5197"",@LockMode = ""exclusive""") ; Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Процедура или функция "sp_getapplock" ожидает параметр "@LockMode", который не был указан. |
|||
8
sitex
naïve
02.08.18
✎
14:14
|
(7) ссылку выше открывал? найди абзац "А.Вызов EXECUTE с передачей единственного аргумента" там же расписано требуется.
|
|||
9
Яшка Копытин
02.08.18
✎
14:40
|
уважаемый sitex здесь сказано
https://msdn.microsoft.com/ru-ru/library/ms188332(v=sql.120).aspx в абзаце А.Вызов EXECUTE с передачей единственного аргумента При выполнении переменная может быть явно поименована. EXEC dbo.uspGetEmployeeManagers @EmployeeID = 6; GO у меня нормально заходят параметры @bPrincipal = ""dbo"", @Resource = ""SC5197"" чем они отличаются от @LockMode = ""exclusive""" ? да ни чем @LockMode такая же именованная процедура как и @Resource вот в чем затык. |
|||
10
Яшка Копытин
02.08.18
✎
14:42
|
Парни поделитесь плиз, примером кода
для передачи из 1С во встроенную функцию T-sql бъюсь уже какой день |
|||
11
Вафель
02.08.18
✎
14:43
|
делай через текст, без параметров
|
|||
12
Яшка Копытин
02.08.18
✎
14:47
|
(11)
Для функции sp_getapplock нужны параметры без них даж на сервере не работает. и к тому же мне нужно конкретную таблицу блокировать SC5197 и журнал. |
|||
13
mr freeman
02.08.18
✎
14:51
|
Про getapplock на скульру тебе подсказали. Зачем тебе этот трэш, юзай упр. блокировки 1С
|
|||
14
mr freeman
02.08.18
✎
14:56
|
Ты там пишешь, это нужно для сообщения юзеру что процесс занят и проводить нельзя. Это выдирание гланд через задницу.
|
|||
15
sitex
naïve
02.08.18
✎
14:59
|
Текст = " BEGIN TRANSACTION
| DECLARE @result int | EXEC @result = sp_getapplock @DbPrincipal = 'dbo' @Resource = 'SC5197', @LockMode = 'Exclusive' "; и дальше GlobalCommand.Execute(Текст); Пробуй ! |
|||
16
sitex
naïve
02.08.18
✎
15:00
|
(10) Так же тут прочитай https://msdn.microsoft.com/ru-ru/library/ms189823(v=sql.120) Разрешения какие нужны.
|
|||
17
sitex
naïve
02.08.18
✎
15:01
|
Вообще тоже не понимаю для чего это вообще нужно.
|
|||
18
Яшка Копытин
02.08.18
✎
15:06
|
(14)(17) это нужно для 1С 77
а отлаживаюсь я на 8ке sitex не хотит работать как в (15) =(( |
|||
19
Яшка Копытин
02.08.18
✎
15:08
|
кто нибудь может платной консультацией поделиться ?
вообще возможно ли всё то что я затеваю |
|||
20
mr freeman
02.08.18
✎
15:16
|
Платная консультация: не занимайся херней. С тебя тыща рублей
|
|||
21
sitex
naïve
02.08.18
✎
15:19
|
(18) А так -> Текст = " BEGIN TRANSACTION
| DECLARE @result int | EXEC @result = sp_getapplock 'dbo', 'SC5197', 'Exclusive' "; |
|||
22
hhhh
02.08.18
✎
15:38
|
что с запятыми? где-то есть запятая, где-то нет. Это шаманство такое?
|
|||
23
sitex
naïve
02.08.18
✎
15:40
|
(22) Если в (15) то да там одна , пропущена.
|
|||
24
hhhh
02.08.18
✎
15:43
|
(23) вообще тут нет двух топиков, где бы запятые одинаково стояли
|
|||
25
sitex
naïve
02.08.18
✎
15:43
|
Только что протестировал, на базе test WS 2008R2 , что в 15 и ---> " BEGIN TRANSACTION
| DECLARE @result int | EXEC @result=sp_getapplock @DbPrincipal=N'test', @Resource=N'1',@LockMode=N'Exclusive' "; все норм работает. Хз что у тебя там не пашет |
|||
26
Яшка Копытин
02.08.18
✎
15:50
|
(25) sitex
Да заработала в (21) Текст = " BEGIN TRANSACTION | DECLARE @result int | EXEC @result = sp_getapplock 'dbo', 'SC5197', 'Exclusive' "; |
|||
27
sitex
naïve
02.08.18
✎
15:52
|
(26) Ну ТС в след раз пиши какая там у тебя версия sql.
|
|||
28
Яшка Копытин
02.08.18
✎
15:58
|
sitex Спасибо большое ! выручил
SQL Server 2008 R2 10.50.6560.0 |
|||
29
Яшка Копытин
02.08.18
✎
16:35
|
еще вопрос, запускаю в студии
что бы снять блокировки USE SMP_2018; GO BEGIN TRAN; EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'SC2984', @LockOwner = 'Transaction' ; GO смотрю 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 в таком синтаксисе ? EXEC sp_releaseapplock @DbPrincipal = 'dbo', @Resource = 'SC2984', @LockOwner = 'Transaction' ; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |