|
|
|
CommandTimeout - практики задания при выборе сервера, базы и т.д.
|
|||
|---|---|---|---|
|
#18+
.NET приложение имеет такую модель доступа (сервер - произвольный sql2000/2005, хоть локальный, хоть за тридевять земель): UI шаг 1. Выбирается сервер (локальный или удаленный) - задается server name + login/password, делается некий простой TestConnection (SELECT @@SERVERNAME) дабы убедиться что сервак существует и отвечает. UI шаг 2. От сервера запрашивается список databases. Выбирается database + table - соответственно проводятся селекты по system tables. UI шаг 3. Открывается table, производится работа с выбранной таблицей. Мне не нравится практика использования на всех шагах по сути одного и того же conection string c unlimited timeout (то, как сейчас сделано). В этом случае после ввода server name если сервер не отвечает (например local server - stopped), приложение пытается ооооочень долго сконнектиться и все это время юзер видит диалог "connecting to server..". вопрос: каковы практики установки commnad timeout для команд: 1) установления физического присутствия сервера ("Test Connection") 2) получения списка databases/tables, короче запросов к системным таблицам. 3) практика unlimited (или заведомо большого скажем 10-15 мин) timeout к таблицам, c которыми непосредственно работает приложение, мне кажется логичной, поэтому тут вроде вопроса нет, но тем не менее буду рад и здесь получить какие-то комментарии. Спасибо. PS Не пинайте, поиском почему-то ничего толкового не нарыл, одни лишь "как избавиться от expired" и подобное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2008, 22:31 |
|
||
|
CommandTimeout - практики задания при выборе сервера, базы и т.д.
|
|||
|---|---|---|---|
|
#18+
1) не commnad timeout, а connection timeout 2) connection timeout по умолчанию не unlimited, если Вы сами не установили его в оную 3) Не изобретайте велосипеды. Для определения списка доступных sql-серверов используйте SqlDataSourceEnumerator.Instance.GetDataSources(), а для определения, можно ли к нему подконнектиться конструкцию try{connection.Open();fl=true;}catch{fl=false;} 4) Опять, не изобретайте велосипеды, есть замечательный метод connection.GetSchema(string) - он вам вернет и БД и таблицы и кучу всего (за справкой в MSDN) 5) для таблиц да - commnad timeout, но 10-15 мин - это очень много, не каждый человек выдержит ждать столько времени, предположим, простую выборку из таблицы А теперь по теме: commnad timeout и connection timeout больше минуты выставлять смысла нет. commnad timeout - можно делать больше, но для этого придется делать какую-то визуализацию в интерфейсе пользователя - типа ждите, идет продолжительная операция ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2008, 20:02 |
|
||
|
CommandTimeout - практики задания при выборе сервера, базы и т.д.
|
|||
|---|---|---|---|
|
#18+
По существу разницы connection/command timeout-ов спасибо, пропустил блин я здесь. GetDataSources() используется конечно же, с юзанием Connection.Open тоже согласен, но дальше все очень индивидуально мне кажется. > 4) Опять, не изобретайте велосипеды, есть замечательный метод connection.GetSchema(string) - > он вам вернет и БД и таблицы и кучу всего (за справкой в MSDN) Вернет ли crdate таблицы? Похоже что нет. > 5) для таблиц да - commnad timeout, но 10-15 мин - это очень много, не каждый человек > выдержит ждать столько времени, предположим, простую выборку из таблицы Как ниже Вы и пишете, UI обеспечивает "ожидание" результатов (там агрегации на сервере проводятся) поэтому для таких случаев явно не 1 мин требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2008, 01:44 |
|
||
|
CommandTimeout - практики задания при выборе сервера, базы и т.д.
|
|||
|---|---|---|---|
|
#18+
так а в чем вопрос-то собственно, я, извините, не понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2008, 13:46 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=35152810&tid=1352395]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 465ms |

| 0 / 0 |
