Монопольное открытие файла

ODBC

Модератор: Andrew™

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Монопольное открытие файла

Сообщение ru_alex »

Всем привет!

Подскажите, плиз, как в MSSQL на Сlarion6 организовать монопольное открытие файла. В справке вроде поддерживается.

С TPS у меня проблем не было, открываешь с соответствующим флажком нужный файл, и можно отслеживать сколько копий приложения запущено, ограничивать и т.д.
В SQL у меня тот же прием не проходит, ошибку на открытие одной и той же таблицы не выдает при запуске двух копий приложения.

Если так и должно быть, тогда какие приемы можно еще применить?
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Re: Монопольное открытие файла

Сообщение Andrew™ »

ru_alex писал(а): Подскажите, плиз, как в MSSQL на Сlarion6 организовать монопольное открытие файла. В справке вроде поддерживается.
С TPS у меня проблем не было, открываешь с соответствующим флажком нужный файл, и можно отслеживать сколько копий приложения запущено, ограничивать и т.д.
В SQL у меня тот же прием не проходит, ошибку на открытие одной и той же таблицы не выдает при запуске двух копий приложения.

Если так и должно быть, тогда какие приемы можно еще применить?
сам то понял что сказал ;) в SQL нету файлов ;)
OPEN поряждает следующий SQL запрос:

Код: Выделить всё

SELECT * FROM myTable WHERE 0=1
залочить таблицу - это значит захватить ВСЕ записи таковой, делаешь

Код: Выделить всё

SELECT ... FROM myTable WITH UPD_LOCK
это ты залочишь существующие записи, с другой станции смогут добавить

а по хорошему - такая возможность для SQL бесполезна, енто моё мнение
ru_alex
Ветеран
Сообщения: 333
Зарегистрирован: 21 Сентябрь 2005, 11:05
Откуда: Нижний Новгород
Контактная информация:

Сообщение ru_alex »

Понятно.
Тогда вопрос такой:
Можно ли так залочить определенную запись определенной таблицы, что бы ее нельзя было удалить во время работы приложения штатными средствами, и была возможность проверить залочена она или нет с другой станции?
Аватара пользователя
Andrew™
SQL профи
Сообщения: 651
Зарегистрирован: 05 Июль 2005, 16:32
Откуда: Москва, Зеленоград

Сообщение Andrew™ »

ru_alex писал(а):Понятно.
Тогда вопрос такой:
Можно ли так залочить определенную запись определенной таблицы, что бы ее нельзя было удалить во время работы приложения штатными средствами, и была возможность проверить залочена она или нет с другой станции?
захватить - это сделать SELECT с соответсвующим хинтом как описано в пред письме, НО это надо делать в транзакции, держать транзакцию открытой на время работы твоей программы несерьёзно, тут надо проще - навесить триггер на таблицу и давать отлуп при удалении в определённых ситуациях.
Ответить