Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрет на работу с таблицей второго пользователя, во время работы первого 
:(
    Опции темы
Lunatikus
Дата 12.2.2008, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 1
Всего: 6



Здравствуйте!Вопрос довольно тривиален,есть решение,но хотелось бы узнать,можно ли проще.
Есть таблица,с которой сейчас работает пользователь_1.В это время другой пользователь_2 выполняет операцию записи/удаления в эту таблицу.В итоге,первый пользователь може получить неверные данные выборки.Как программно запретить доступ к таблице на модифицирование,пока выполняется какая-то операция?И наоборот,запретить просмотр данных,пока выполняется запись или удаление.У меня враиант с индикатором в одтельной табличке,который меняется и отображает,какая операция происходит в данный момент с таблицей.Есть ли более быстрый способ без доп. таблиц?

Это сообщение отредактировал(а) Lunatikus - 12.2.2008, 15:26


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Rodman
Дата 12.2.2008, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 22
Всего: 122



а какая СУБД? как я думаю например в SQL Server и Oracle ведется лог работы с базой... мож к нему и обращаться, т.е. смотреть - открытали таблица кем то или нет!
PM MAIL WWW Skype GTalk YIM MSN   Вверх
Lunatikus
Дата 12.2.2008, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 1
Всего: 6



прошу прощения,забыл указать.MS SQL server 2000.Как можно доступиться через запрос до лога?

Добавлено через 1 минуту и 18 секунд
а если из-за аварийного завершения работы,программа закрылась,а сервер не получил данных о завершении транзакции и продолжает думать,что она еще открыта?получается,вообще никто не войдет,пока сервер сам не завершит?хотя это детали.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
Esperito
Дата 12.2.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 147
Регистрация: 2.9.2007

Репутация: 2
Всего: 3



Вообще-то это решается уровнем изоляции транзакций...
PM MAIL   Вверх
Lunatikus
Дата 13.2.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 1
Всего: 6



как использовать можно?что это такое прочитал,но примеров использования уровней изоляции не нашел вменяемых.


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
X-Vlad
Дата 13.2.2008, 11:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 570
Регистрация: 10.4.2002
Где: Украина, Львов

Репутация: 3
Всего: 5



когда первый пользователь делает выборку зделай например 
Код

select * from ... WITH(ROWLOCK)


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

Цитата

The following table describes the locking hints that you can use in SQL Server Compact Edition.

Locking hint name  Hint description  
GRANULARITY 
 
 
ROWLOCK
 Use row-level locks when reading or modifying data. These are acquired and released as appropriate.

SELECT operations take S locks on rows. 
 
PAGLOCK
 Use page-level locks when reading or modifying data. These are acquired and released as appropriate.

SELECT operations take S locks on pages.
 
TABLOCK
 Use a table lock when reading or modifying data. This lock is held until the end of the statement. 

SELECT operations take S locks on tables.
 
DBLOCK
 Use a database lock when reading or modifying data. This lock is held until the end of the statement. 

SELECT operations take S locks on databases. 
 
LOCKMODES 
 
 
UPDLOCK
 Use update locks instead of shared locks while reading a table, and use hold locks until the end of the statement or transaction. UPDLOCK lets you read data without blocking other readers, and to update it later with the assurance that the data has not changed since you last read it. 

SELECT operations take U locks. The default granularity is ROWLOCK.
 
XLOCK
 Use exclusive locks instead of shared locks while reading a table, and use hold locks until the end of the statement or transaction.

SELECT operations take X locks. The default granularity is ROWLOCK.
 
DURATION 
 
 
HOLDLOCK
 Use a hold lock to hold a lock until completion of the transaction, instead of releasing the lock as soon as the required table, row, or data page is no longer required.

If no granularity is specified, ROWLOCK is applied.
 
NOLOCK
 Does not issue any locks. This is the default for SELECT operations. It does not apply to INSERT, UPDATE, and DELETE statements.

Note:  
With SQL Server, a NOLOCK hint enables Read Uncommitted behavior. With SQL Server Compact Edition, using a NOLOCK hint still gives a Read Committed isolation level. SQL Server Compact Edition maintains copies of data to ensure that data can be read without needing share locks to help protect the data.
 

 

For more information about using locking hints, see "Locking Hints" in SQL Server Books Online. 


Это сообщение отредактировал(а) X-Vlad - 13.2.2008, 11:26


--------------------
Хорошая штука - комп..:)
www.x-vlad.com
PM MAIL WWW ICQ   Вверх
Lunatikus
Дата 13.2.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 503
Регистрация: 29.6.2007

Репутация: 1
Всего: 6



спасибо, X-Vlad, попробую


--------------------
TheSin - небольшое игровое сообщество взрослых и молодых(L2,WoW,Aion,RFonline and other not mmorpg,not computer games).
сайт гильдии
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.