|
20.04.2015, 14:24 | #1 |
Участник
|
Коннекшен для TempDB неважен
Недавно приводили пример, как может заполняться таблица на самом SQL-сервере в хранимой процедуре Для доступа к этой таблице достаточно передать ее имя (уникальное для сессии)
__________________
Axapta v.3.0 sp5 kr2 |
|
20.04.2015, 14:43 | #2 |
Участник
|
Это как? Другой пользователь/сеанс может увидеть "мои" временные данные?
Цитата:
На практике, гарантировать "не переключение" соединения на уровне Axapta можно только путем прямого контроля за объектом Connection. Все остальное - это "как повезет". Может получиться, а может и нет... Тот факт, что, как правило, Axapta "держит" текущее соединение до окончания обработки, как раз и относится к таким "везениям". Некое действие по умолчанию, которое программист контролировать не может. Поэтому строить на этом какие-то далеко идущие выводы - не стоит.
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
20.04.2015, 14:52 | #3 |
Участник
|
Цитата:
Одно условие - он должен знать имя таблицы (не аксаптовское, а физическое, что-нибудь типа такого [tempdb].[dbo].[t100005_E51B88936E814961BE9EFF89CE81E8D4]). Насчет сессии, повторюсь, совершенно неважно Я в Менеджмент студии руками заполнял значения таблицы, которая отображалась в интерфейсе аксапты Насчет "удержания соединения" - это уже задача программиста, что бы оно удерживалось на время работы стороннего средства)
__________________
Axapta v.3.0 sp5 kr2 |
|
20.04.2015, 17:08 | #4 |
Участник
|
Цитата:
Сообщение от AndyD
Не смешивайте, пожалуйста)
Для InMemory и в 2012 нельзя Цитата:
X++: TmpTable tmpTable; //fill tmpTable thread = new Thread(); thread.setInputParm([tmpTable.getPhysicalTableName()]); thread.removeOnComplete(true); thread.run(classnum(MyClass), staticmethodstr(MyClass, runThread)); thread.waitUntilSignaled(); // tmpTable после работы Thread
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
20.04.2015, 20:24 | #5 |
Участник
|
Цитата:
Тот факт, что у имени таблицы отсутствует ведущий символ "#", идентифицирующий именно временную таблицу в терминах MS SQL - это особенности "перевода" (пример) или действительно таблица создается в узле Table, а не в узле "Temporary Tables" базы данных tempdb? В смысле, если смотреть через MS SQL Server Management Studio. Т.е. с точки зрения MS SQL - это именно временная таблица, живущая только в текущем соединении, или постоянная таблица просто созданная в базе tempdb?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
20.04.2015, 21:54 | #6 |
Участник
|
Да, только для 2012-й
Цитата:
Сообщение от Владимир Максимов
Тот факт, что у имени таблицы отсутствует ведущий символ "#", идентифицирующий именно временную таблицу в терминах MS SQL - это особенности "перевода" (пример) или действительно таблица создается в узле Table, а не в узле "Temporary Tables" базы данных tempdb? В смысле, если смотреть через MS SQL Server Management Studio.
Т.е. с точки зрения MS SQL - это именно временная таблица, живущая только в текущем соединении, или постоянная таблица просто созданная в базе tempdb? Поскольку, при перестарте сиквела он целиком и полностью пересоздается Таблица создается в узле Table - это не "перевод", а пример реальной таблицы
__________________
Axapta v.3.0 sp5 kr2 |
|
21.04.2015, 11:01 | #7 |
Участник
|
Понятно. MS в очередной раз "вырвало поражение из рук победы" Теперь и из базы TempDB сделали одну большую помойку, по аналогии с "временными" файлами в директории C:\Windows\Temp
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|