У меня есть текст SQL «SELECT * FROM TABLE1 WITH (NOLOCK)».Как вы используете NOLOCK с TADOQuery и TADOTable?
Два вопроса:
Как мне сделать мой TADOQuery использовать NOLOCK подсказку без необходимости включения, что в тексте SQL? У меня буквально тысячи TADOQuery с динамическим построением их SQL, и было бы сложно добавить WITH (NOLOCK) ко всем из них, не говоря уже о том, что я использую с платформами баз данных, отличными от MSSQL. Существует ли свойство TADOQuery?
Как добиться того же результата с помощью TADOTable? У TADOTable нет никакого SQL-кода, так как я могу сказать ему использовать подсказку NOLOCK?
Благодаря
Да. И знаете ли вы последствия? Если это не уровень по умолчанию, есть веская причина. Для защиты целостности данных существуют транзакции и блокировки. Прежде чем выбросить это, я бы подумал дважды - должна быть очень веская причина. – 2010-10-02 16:47:35
Является ли это утверждение применимым только к одному сеансу (т. Е. Мне нужно делать это каждый раз, когда я запускаю свое приложение)? Или он постоянно установлен на базу данных? Это влияет только на инструкции SELECT или на все SQL-запросы? –
Это только для сеанса. Это повлияет на все операторы DML, например, любое предложение where будет «читать» базу данных. Ваш запрос может (и будет ...) возвращает результаты, которые никогда не существовали в базе данных. Если ваша база данных не доступна только для чтения, вы ищете проблемы. Используя подсказку NOLOCK для данного запроса, зная, что делать, это нормально. Использование его для целой сессии, если база данных не доступна только для чтения, очень опасна. Производительность - это еще не все. Пользователь обычно предпочитает правильный результат, даже если медленнее, чем неправильный, быстрее. – 2010-10-10 16:13:37