Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];

Вниз

Установка 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.009 c
2-1150354720
Марина
2006-06-15 10:58
2006.07.02
Как прокнутить скролл?


2-1150280850
FiJer
2006-06-14 14:27
2006.07.02
Поиск hex строки


3-1146750076
Ольга
2006-05-04 17:41
2006.07.02
Скрипт объекта БД посредством SQLDMO.SQLServer


15-1149340180
ArtemESC
2006-06-03 17:09
2006.07.02
Матанализ - задачка...


1-1148213533
Windows
2006-05-21 16:12
2006.07.02
Работа с CD-RW





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский