powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Временные таблицы и ADO.NET
25 сообщений из 46, страница 1 из 2
Временные таблицы и ADO.NET
    #35347993
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла интересная ситуация. MS SQL Server. В базе имеются процедуры, которые работают с временными таблицами. Эти процедуры вызываются из триггера на обновление таблицы с данными. На клиенте при старте приложения создаю временные таблицы через CREATE TABLE #TMP...
Затем делаю изменения в таблице с данными. Вызываю tableadapter.Update(...) таблицы с данными в которой триггер на обновление использует процедуры, работающие с временными таблицами. Получаю exeption от базы, что временной таблицы не существует. Что за беда. Строка соединения у адаптера и SQLCommand на создание таблиц одна и та же (из конфига приложения). Какие у кого будут мысли. Что я делаю не так.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348007
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пулинг соединений? опробовать отключить?
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348051
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pooling отключал. Не помогло.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348087
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Методом научного тыка дошел до следующего.
При загрузке приложения врем. таблицы однозначно создаются.
Затем происходит первое обращение к данным tableadapter.Fill(...).
И все, временные таблицы как ветром сдуло.
Не пойму, куда дальше копать.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348098
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот и решилась проблема. Если кому интересно, то для правильной работы с локальными временными таблицами в свойствах соединения должны быть указаны следующие параметры:
Pooling=True; Connection Reset=False
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348216
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savolvВот и решилась проблема. Если кому интересно, то для правильной работы с локальными временными таблицами в свойствах соединения должны быть указаны следующие параметры:
Pooling=True; Connection Reset=False

Грабли готовы... и ждут своих героев.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348827
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buser
Грабли готовы... и ждут своих героев.

Назвался груздем, полезай в кузовок.
Поподробнее про грабли, если нетрудно.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348852
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в смысле адаптер закрывает коннект.и поэтому таблицы сдувает.
может у адаптера есть настройка не закрыавть коннект после метода fill?
ведь времянка привязана к spid.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348866
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeiKв смысле адаптер закрывает коннект.и поэтому таблицы сдувает.
может у адаптера есть настройка не закрыавть коннект после метода fill?
ведь времянка привязана к spid.

Самое интересное что коннект сбрасывается до запроса на выборку в Fill адаптера.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348878
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Connection Reset=False

просто вот это ,может закосячить все работу ado.net.
так как если работа ведется с несколькими базами ,через один коннект,то может замутиться каша.
так как database context не будет сброшен. ну у вас видимо все проще.так что опасаться не стоит.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348880
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savolv AlexeiKв смысле адаптер закрывает коннект.и поэтому таблицы сдувает.
может у адаптера есть настройка не закрыавть коннект после метода fill?
ведь времянка привязана к spid.

Самое интересное что коннект сбрасывается до запроса на выборку в Fill адаптера.

значит код пишите так :) чудес то не бывает. вы код покажите уже.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348890
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В профайлере это выглядит примерно так:

exec sp_reset_connection
Выполнение запроса на создание локальных таблиц (ExceNonQuery)
...
...
...
exec sp_reset_connection
Запрос для первого метода Fill...
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348901
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так,вы каким кодом то создаете времянки?
такое ощущение что вы постоянно делаете новый sqlconnection объект.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348926
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeiK
значит код пишите так :) чудес то не бывает. вы код покажите уже.

Код просто банален.
В Load формы SQLCommand.ExecuteNonQuery() с текстом CREATE TABLE #...
По кнопке заполням адаптер из таблицы данных базы. И вот здесь локальных таблиц уже нет при Connection Reset=True.
При Connection Reset=False все нормально. Строка подключения у всех одна, берется из config приложения.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348940
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlexeiKтак,вы каким кодом то создаете времянки?
такое ощущение что вы постоянно делаете новый sqlconnection объект.

Я пользуюсь типизированным Dataset и все sqlconnection создаются самими адаптерами. Но если мне не изменяет память система пулинга должна следить затем, чтобы реально было одно соединение с базой для идентичных строк подключения в приложении.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348976
AlexeiK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну ,короче хорошо то,что вы не работаете с разными базами данных внутри приложения.
как только... так сразу вспомните про Connection Reset.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35348993
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Примерный код в Load формы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
string sql1 = "CREATE TABLE #localtable...";
System.Data.SqlClient.SqlConnection conn= new System.Data.SqlClient.SqlConnection(MyApp.Properties.Settings.Default.txtConnectionString);
System.Data.SqlClient.SqlCommand command = new SqlCommand(sql1, conn);
conn.Open();
command.ExecuteNonQuery();
command.CommandText = sql2;
command.ExecuteNonQuery();
command.CommandText = sql3;
command.ExecuteNonQuery();
conn.Close();

Код вызываемый по кнопке

Код: plaintext
1.
2.
regionTableAdapter regionTableAdapter = new regionTableAdapter();
regionTableAdapter.Fill(abonentDataSet.region); //здесь происходит самопроизвольный del локальных таблиц

Помоему ничего особенного.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35349005
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В предыдущем посте правильнее вот так (все лишнее удалил)
Код: plaintext
1.
2.
3.
4.
5.
6.
string sql1 = "CREATE TABLE #localtable...";
System.Data.SqlClient.SqlConnection conn= new System.Data.SqlClient.SqlConnection(MyApp.Properties.Settings.Default.txtConnectionString);
System.Data.SqlClient.SqlCommand command = new SqlCommand(sql1, conn);
conn.Open();
command.ExecuteNonQuery();
conn.Close();
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35349013
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос остался чисто теоретический. Почему все-таки сбрасывается соединение перед вызовом Fill адаптера.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35349708
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что никто не обязан гарантировать что что-то там должно подбирать один и тот же коннект, кроме того ещё и работающий. Вообще это плохая практика, надеяться на такой случай
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35349803
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
зыпотому что никто не обязан гарантировать что что-то там должно подбирать один и тот же коннект, кроме того ещё и работающий. Вообще это плохая практика, надеяться на такой случай

А как же тогда использовать локальные таблицы??? Их смысл с том, что они создаются только для текущего соединения текущего пользователя.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35350144
Артем1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savolv зыпотому что никто не обязан гарантировать что что-то там должно подбирать один и тот же коннект, кроме того ещё и работающий. Вообще это плохая практика, надеяться на такой случай

А как же тогда использовать локальные таблицы??? Их смысл с том, что они создаются только для текущего соединения текущего пользователя.

адаптер позволяет указать для себя не только строку подключения, но и уже готовый открытый коннект. вот и используйте эту возможность, как раз ваш случай.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35351002
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
savolv зыпотому что никто не обязан гарантировать что что-то там должно подбирать один и тот же коннект, кроме того ещё и работающий. Вообще это плохая практика, надеяться на такой случай

А как же тогда использовать локальные таблицы??? Их смысл с том, что они создаются только для текущего соединения текущего пользователя.
нафига они вообще тебе нужны? они на то и временные, что существуют только в определенном scope, а держать в них данные между запросами - это глупость и рано или поздно перестанет работать 100%. Времянки надо создать, воспользоваться и сразу удалить. Все остальное это уже обычные таблицы
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35352033
savolv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Артем1
адаптер позволяет указать для себя не только строку подключения, но и уже готовый открытый коннект. вот и используйте эту возможность, как раз ваш случай.

Я думал об этом. Но ведь соединение с базой и так должно быть одно (pooling). Весь вопрос, откуда берется второе, если строка подключения у всех адаптеров одна и та же. Где может быть косяк не пойму. Может быть в недрах сборок Framework и можно найти ответ, но просто нет на это времени и желания. Факт остался фактом. При создании соединения руками и адаптерами, созданными студией строки подключения чем-то отличаются из-за чего реально образуются два соединения с сервером. Хотя и в том и другом случае строка соединения берется из глобальных настроек приложения.

Всем спасибо за участие.
...
Рейтинг: 0 / 0
Временные таблицы и ADO.NET
    #35352186
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да блииин, ещё раз говорю - пулинг не означает что у тебя будет одно одинаковое на всех соединение. Новые соединения могут создаваться в любой момент по запросу, а старые закрываться, и тебя это не должно волновать
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Временные таблицы и ADO.NET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]