Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
как пооптимальней на любой из последних 3х-4х версий SQL Server (в т.ч. 2019 CTP) во view вернуть колонну из SP (или в table: computed column из SP)? t-sql udf функцией вызов SP естественно не работает из-за: 'Only functions and some extended stored procedures can be executed from within a function' SP конечно-же возвращает скаляр, например: Код: sql 1. 2. 3. 4. 5. запросы к таблицам/представлениям динамически генерирует внешнее приложение/UI над которым нет контроля (генерирующее только select запросы, т.е. нет возможности execute) поэтому единственный проходящий на ум путь получения фактов - запуск SP на каждую строку предварительного набора ключей измерений (благо наборы довольно малые: до 1000 строк) пока единственное что вижу более-менее рабочее: это писать функцию через assembly (CLR) {пс: уже написал, т.е. через CLR работает} - что будет на порядок медленнее т.к. эта CLR по доступу к данным, надо вызывать .NET, устанавливать соединение и т.д, т.е. чего очень не хотелось-бы (т.к. возможно пойдёт в облако {Azure} а там с этим немного напряг, хотя уже тоже поддерживает). а Extended Stored Procedure (ESP) уходят в небытиё. в общем возвращает к сабжу - как в computed column получить результат из SP (scalar) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 06:40 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
vikkivSP конечно-же возвращает скаляр, например:В вашем примере SP вернула не "скаляр", а таблицу, состоящую из одной колонки типа datetime, без имени колонки, при этом в возвращаемой табюлице одна запись. vikkivили в table: computed column из SPТак нельзя. vikkivво view вернуть колонну из SP (или в table: computed column из SP)?А вот во view или в computed column вызвать UDF можно vikkivзапросы к таблицам/представлениям динамически генерирует внешнее приложение/UI над которым нет контроля (генерирующее только select запросы, т.е. нет возможности execute) поэтому единственный проходящий на ум путь получения фактов - запуск SP на каждую строку предварительного набора ключей измерений (благо наборы довольно малые: до 1000 строк)В общем, что то задача пока непонятна. Приложение умеет только делать запросы к таблицам? Менять вы эти запросы можете? Тогда делайте запросы. Запросы фиксированные, и вам нужно изменить их поведение, не меняя сами запросы? Тогда меняйте таблицы на view, хотя, конечно, так можно изменить что либо совсем чуть чуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 09:02 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
alexeyvg alexeyvg...Менять вы эти запросы можете? ...Запросы фиксированные, и вам нужно изменить их поведение, не меняя сами запросы?.. спасибо, могу только подменить объекты ( view/table ) может не понятно выражаюсь, попробую ещё раз: 1) приложение генерирует только простые select a,b,c..from..join..where 2) необходимо туда вставлять результат процедуры SP - например view: ..x.id,dbo.my_foo(x)as y from dbo.x или table: ..dbo.z (id smallint, y as dbo.my_foo(z)) где my_foo() вызывает SP (что естественно не работает из-за причин в начальном посте) 3) известная (и сейчас работающая) возможность делать это через функцию как-нибудь вызывающую SP (пока получилось только через CLR.NET, т.е: create assembly .. create function ... ) есть-ли другие варианты получения обычным SQL (но не сложным Т-SQL) результата SP в select (без батчей, cte, derived, коррелированных, @, # ..) в крайнем случае если обходных вариантов совсем нет то наверное можно попробовать добавить немного T-SQL через @ или # таблицы (предварительно материализовать результаты не представляется возможным из-за сложности расчётов в SP и высокой динамики контекста) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 13:31 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
вообще странно что MS всё ещё запрещают делать пользовательские функции на основе пользовательских процедур, могли-бы давно вынести это на усмотрение DBA запретив по умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 13:33 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
vikkiv, Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 13:54 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
WarAnt, да, openquery/openrowset тоже вариант но в моём случае нужно на вход SP (и как следствие функции) возвращающей факт - передать данные (набор ключей измерений) без использования переменных @ (чтобы сгенерировать последний параметр openquery), хотя твой приемлеммый вариант по производительности наверное близко к CLR.NET SP будет, т.к. тоже нужно открывать соединение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 14:18 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
vikkivпроизводительности наверное близко к CLR.NET SP будет, т.к. тоже нужно открывать соединение.для CLR необяззательно открывать соединение, она может работать в том же вызывающем соединении (и в той же транзакции). vikkiv3) известная (и сейчас работающая) возможность делать это через функцию как-нибудь вызывающую SP (пока получилось только через CLR.NET, т.е: create assembly .. create function ... )Да, только через CLR. Вообще самый правильный вариант - не вызывать SP, раз уж архитектура на это не расчитана. Ну или научить приложение вызывать SP? Вот странно, вы пишите, что приложение может делать только простые запросы, но потом пишите, что "наверное можно попробовать добавить немного T-SQL через @ или # таблицы" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 14:45 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
alexeyvgНу или научить приложение вызывать SP? Вот странно, вы пишите, что приложение может делать только простые запросы, но потом пишите, что "наверное можно попробовать добавить немного T-SQL через @ или # таблицы" эта просто альтернатива которую держать в запасе на всякий случай (давить на изменение клиенского софта) - просто усилия/ресурсы потребуются намного большие (в несколько раз) чем текущее CLR решение ...пойду копать свой C# на предмет максимальной оптимизации alexeyvgВообще самый правильный вариант - не вызывать SP, раз уж архитектура на это не расчитана.ну как-бы лучшие практики это одно, а бизнес задачи и необходимость их решения никто пока не отменял, всё-таки IT работает на бизнес а не наоборот типа частого мнения что бизнес существует для создания зоны комфорта и феншуя в IT по наблюдениям: у нас админов встающих в позу и не предлагающих работоспособных и эффективных альтернатив (с чётким раскладом по рискам) - довольно быстро выкидывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 15:07 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
vikkivalexeyvgВообще самый правильный вариант - не вызывать SP, раз уж архитектура на это не расчитана.ну как-бы лучшие практики это одно, а бизнес задачи и необходимость их решения никто пока не отменял, всё-таки IT работает на бизнес а не наоборот типа частого мнения что бизнес существует для создания зоны комфорта и феншуя в ITЭэээ, бизнес, сэйлы и бухгалтеры, принимают технические решения??? Говорят "вызывайте SP из вьюх"??? Гениально! vikkivпо наблюдениям: у нас админов встающих в позу и не предлагающих работоспособных и эффективных альтернатив (с чётким раскладом по рискам) - довольно быстро выкидывают.Угу, так я и рассказываю расклады по рискам Эти принимаемые бухгалтерией и сейлами идиотские технические решения будут кривые, ненадёжные, в разы увеличат расходы на ИТ. Я понимаю, закрытые решения иногда приходится "приоткрывать", править, скреплять и подпирать палками. Но не настолько же??? Что за странное сочетание несочетаемого? В общем, примерно так, как если бы программисты указывали продажникам как, по их мнению, надо продавать, и бухгалтерам, как начислять налоги. Что то мне подсказывает, что тут уже бизнес "встанет в позу" и пошлёт таких программистьов "на" и "в" :-) Но сделать можно, да, с учётом этих рисков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 15:24 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
Бизнесу вообще по барабану, что внутри. Использовать SP_ (XP_) процедуры в бизнес-задачах - это грехи программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 15:39 |
|
||
|
как пооптимальней во view вернуть колонну из SP (или в table: computed column из SP)?
|
|||
|---|---|---|---|
|
#18+
alexeyvg, понимаю конечно мнение, но по факту с той стороны техническую часть не лезут - просят решить проблему каждый занимаясь своим делом. (накладывая некоторые ограничения/приоритеты, в данном случае по возможности не (из-)меняя софт {обращение к сторонним поставщикам с соответствующим ценником}) проведена оценка выгоды от автоматизации процесса, нужно узнать варианты чего будет стоить решения выгода > стоимость в разы (если менять софт - то выгода < стоимость) разработан и оттестирован прототип, архитектура на это рассчитана (CLR, openrowset), риски оценены. просто думал может местные гуру специализирующиеся в вопросе знают вариант получше - а то вдруг у меня что забылось (хотя openrowset часто использую - но тут почему-то выскочило как вариант) так что если альтернатив нет - то вопрос закрыт, всем спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.03.2019, 15:46 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39781678&tid=1688190]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 272ms |
| total: | 440ms |

| 0 / 0 |
