Текущий архив: 2006.07.02;
Скачать: CL | DM;
Вниз
Установка ISOLATION LEVEL по умолчанию для MSSQL 2000. Найти похожие ветки
← →
supervk © (2006-05-03 10:07) [0]Использую связку: Delphi - BDE - драйвер "SQL Server" - MSSQL 2000
Есть ли возможность установить ISOLATION LEVEL по умолчанию для базы или всего сервера целиком, а может как нибудь настроить драйвер или BDE, чтобы при соединении с базой не надо было каждый раз устанавливать (прописывать в программе):
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ?
Если есть, то как это сделать?
← →
Nikolay M. © (2006-05-03 10:14) [1]
> Есть ли возможность установить ISOLATION LEVEL по умолчанию
> для базы или всего сервера целиком
Нет, по крайней мере для 2000.
> чтобы при соединении с базой не надо было каждый раз устанавливать
> (прописывать в программе):
Религия не позволяет выполнить это один раз при установке соединения?
Вообще, если не позволяет, то это правильная религия. Программист каждый раз должен отдавать себе отчет, что именно он читает и на каком уровне изоляции. За такой пофигизм к незакомиченным данным пользователи рано или поздно побьют.
← →
supervk © (2006-05-03 10:43) [2]А в BDE нельзя включить необходимый уровень изоляции?
← →
Johnmen © (2006-05-03 10:48) [3]В БДЕ нет. Грязное чтение не поддерживается. По кр. мере для MSSQL.
← →
sniknik © (2006-05-03 10:58) [4]в БДЕ много чего не поддерживается... например сама MSSQL 2000... гарантировано и проверялось только для версии 6.5. так что использование на свой страх и риск. (нового с ним лучше не начинать)
← →
Nikolay M. © (2006-05-03 11:24) [5]
> supervk © (03.05.06 10:43) [2]
> А в BDE нельзя включить необходимый уровень изоляции?
Что значит "в BDE"? БДЕ - это способ доступа к данным, за уровень изоляции отвечает сервер, а не компоненты доступа.
Вопрос аналогичен "можно ли в БДЕ включить лампочку".
← →
Johnmen © (2006-05-03 11:35) [6]
> Nikolay M. © (03.05.06 11:24) [5]
Твоя неправда про БДЕ. Про лампочку - правда...
БДЕ вполне может управлять уровнем изоляции тр-ий.
← →
Nikolay M. © (2006-05-03 12:14) [7]
> Johnmen © (03.05.06 11:35) [6]
> БДЕ вполне может управлять уровнем изоляции тр-ий.
И как это будет в случае клиент-сервера? БДЕ само получит монопольный доступ к .mdf и .ldf фалам и само же выполнит запрос на необходимом уровне изоляции? 3 раза ха.
Речь здесь, естественно, не о том, как БДЕ умеет рулить локальными парадоксовскими файликами.
← →
isasa © (2006-05-03 13:19) [8]А как же это? :)
Help D6
TDatabase.TransIsolation
Specifies the transaction isolation level for transactions managed by the Borland Database Engine (BDE).
type TTransIsolation = (tiDirtyRead, tiReadCommitted, tiRepeatableRead);
property TransIsolation: TTransIsolation;
Server Specified Level Actual Level
...
Sybase, MS-SQL tiDirtyRead tiReadCommitted
tiReadCommitted tiReadCommitted
tiRepeatableRead Not supported
...
← →
Johnmen © (2006-05-03 13:23) [9]
> Nikolay M. © (03.05.06 12:14) [7]
Про монопольный доступ не понял.
БДЕ сама "выставит" уровень, вызвав соотв.функцию клиентской длл.
А впрочем, ха, так ха, хоть тыщу раз...
← →
Nikolay M. © (2006-05-03 13:34) [10]
> Johnmen © (03.05.06 13:23) [9]
> Про монопольный доступ не понял.
> БДЕ сама "выставит" уровень, вызвав соотв.функцию клиентской
> длл.
Именно, и я о том же. В лучшем случае это "умение" сведется к вызову того же SET TRANSACTION ISOLATION, но этого, судя по [8], вообще не произойдет.
← →
supervk © (2006-05-04 04:06) [11]
Nikolay M.
Что значит "в BDE"? БДЕ - это способ доступа к данным, за уровень изоляции отвечает сервер, а не компоненты доступа.
Вопрос аналогичен "можно ли в БДЕ включить лампочку".
Например, в параметре InterBase есть DRIVERFLAGS, установив который, можно поменять уровень изоляции по умолчанию.
← →
supervk © (2006-05-04 04:19) [12]Nikolay M. ©
> Что значит "в BDE"? БДЕ - это способ доступа к данным, за
> уровень изоляции отвечает сервер, а не компоненты доступа.
Но BDE, например, могла бы установить соответствующий уровень изоляции для своего соединения с MSSQL после его установки.
← →
supervk © (2006-05-04 04:28) [13]
> Nikolay M.
> > Johnmen © (03.05.06 13:23) [9]
> > Про монопольный доступ не понял.
> > БДЕ сама "выставит" уровень, вызвав соотв.функцию клиентской
> > длл.
> Именно, и я о том же. В лучшем случае это "умение" сведется
> к вызову того же SET TRANSACTION ISOLATION, но этого, судя
> по [8], вообще не произойдет.
Именно к этому оно и сведётся. При начале явной транзакции (TDatabase.StartTransaction) происходит вызов SET TRANSACTION ISOLATION LEVEL. Собственно, как я понимаю, так и должно быть. Этим и обеспечивается соответствующий уровень изоляции.
← →
Nikolay M. © (2006-05-04 10:27) [14]
> supervk © (04.05.06 04:28) [13]
Все правильно понимаешь.
Кстати, хоть в хелпе и написано, что
Sybase, MS-SQL tiDirtyRead tiReadCommitted
tiReadCommitted tiReadCommitted
tiRepeatableRead Not supported
однако на практике SET TRANSACTION ISOLATION LEVEL выставляется в каждом случае правильный.
← →
supervk © (2006-05-04 11:21) [15]
> Nikolay M. © (04.05.06 10:27) [14]
> Все правильно понимаешь.
> Кстати, хоть в хелпе и написано, что
> Sybase, MS-SQL tiDirtyRead tiReadCommitted
> tiReadCommitted tiReadCommitted
> tiRepeatableRead Not supported
> однако на практике SET TRANSACTION ISOLATION LEVEL выставляется
> в каждом случае правильный.
Ужас. Туда я не заглядывал. Возможно, это работает потому что, например, я использую _ODBC_ драйвер.
← →
supervk © (2006-05-04 11:35) [16]
> Ужас. Туда я не заглядывал. Возможно, это работает потому
> что, например, я использую _ODBC_ драйвер.
Нет. Попробовал родной драйвер BDE ("MSSQL") - тоже работает, переключается в READ UNCOMMITTED.
← →
supervk © (2006-05-04 11:43) [17]Ну так вот, в моём случае и получается проблема - пока запускаются явные транзакции - уровень изоляции устанавливается, как прописано в TDataBase.TransIsolation, т.е. READ UNCOMMITTED и всё работает как и должно. А при неявных транзакциях операции выполняются на уровне, установленном в SQL сервере по умолчанию, т.е. ReadCommitted и нихрена не работает. И хрен подкрутишь этот уровень по умолчанию.
← →
Nikolay M. © (2006-05-04 13:08) [18]
> И хрен подкрутишь этот уровень по умолчанию.
До сих пор не понимаю, что мешает самостоятельно выполнить нужный запрос и установить необходимый уровень изоляции.
← →
supervk © (2006-05-04 13:31) [19]
> Nikolay M. © (04.05.06 13:08) [18]
> До сих пор не понимаю, что мешает самостоятельно выполнить
> нужный запрос и установить необходимый уровень изоляции.
То, что программа не моя.
← →
Nikolay M. © (2006-05-04 15:08) [20]
> То, что программа не моя.
И это выясняется к 19 посту... :(
← →
supervk © (2006-05-06 09:14) [21]
> Nikolay M. c (04.05.06 15:08) [20]
> То, что программа не моя.
> И это выясняется к 19 посту... :(
Прошу прощения, что так получилось.
Но я старался не загружать вопрос лишней информацией, к тому же в таких случаях мне обычно советуют обратиться к разработчикам, рассказывают, что программа не предназначена ... и т.д. и т.п.
Страницы: 1 вся ветка
Текущий архив: 2006.07.02;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.009 c