|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
извините, что повторяю топик , но тут я описал вопрос более корректно да и тема касается .NET тоже : Логика, которую я описал ниже, прекрасно работает на моих некритичных приложениях. Но я не знаю, насколько она "кошерна", так как я не могу явно влиять на то, чтобы команда создания временной таблицы выполнялась как ad hoc. А в документации на SqlCommand явно не описано, когда запрос будет выполнен как ad hoc а когда как параметризированный. Если MS когда нибудь изменит поведение SqlCommand так, что запросы 1 и 2 будут упакованы в sp_executesql, то использование временных таблиц из .NET кода станет новозможным, а приложение станет неработоспособным. Псевдокод для .NET и SQL Server 1) открываем коннекшн 2) создаём временную таблицу (только ad hoc командой!!!) 3) заливаем в неё кучу данных через SqlBulkCopy 4) выполняем запрос на выборку/изменение с джоином ко временной таблице (этот запрос уже может быть параметризированный) 5) закрываем коннекшн Упрощённый пример: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Вопросы: Можно ли включать такое использование времменных таблиц в приложение и быть уверенным, что со следующим фреймворком это ещё будет работать? Может ли кто привести "тынц" в документацию на SqlCommand: "ad hoc" vs. "parameterized"? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 16:32 |
|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2020, 17:04 |
|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
Alexander Us, А почему Вы думаете, что это может перестать работать? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 21:47 |
|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
Параметры придумали для лохов, которые не могут сами собрать sql-выражение из пользовательского ввода. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 21:55 |
|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
Alexander Us Может ли кто привести "тынц" в документацию на SqlCommand: "ad hoc" vs. "parameterized"? Параметризованные запросы кешируются, что сильно сказывается на скорости, и намного безопасней, убережёт от SQL инъекций. Тынц в доку у меня в голове не записано. Мне также придётся искать, как и вам. Вы хоть пробовали? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.06.2020, 23:09 |
|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
hVostt Параметризованные запросы кешируются Ad hoc в общем случае тоже вполне кэшируются (и это является ещё одной проблемой ad hoc - засорение кэша запросов). И даже могут использоваться повторно, если включена форсированная параметризация. Но ТС спрашивал немного про другое - не про отличия ad hoc от parametrized, а про правила выполнения инструкций в первом или втором виде - т.е. можно ли считать комментарий в коде, поясняющий, что если параметров нет, то ad hoc, если есть - parametrized, за правило, которое будет соблюдаться в дальнейшем, т.к. если создание временной таблицы будет завернуто в вызов sp_executesql (в который заворачиваются все параметризованные инструкции), то эту временную таблицу никто никогда не увидит. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 07:31 |
|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
Сон Веры Павловны Ad hoc в общем случае тоже вполне кэшируются (и это является ещё одной проблемой ad hoc - засорение кэша запросов). И даже могут использоваться повторно, если включена форсированная параметризация. Это как бы, тоже не бесплатно, и требует ручного вмешательства в настройки ) Сон Веры Павловны Но ТС спрашивал немного про другое - не про отличия ad hoc от parametrized, а про правила выполнения инструкций в первом или втором виде - т.е. можно ли считать комментарий в коде, поясняющий, что если параметров нет, то ad hoc, если есть - parametrized, за правило, которое будет соблюдаться в дальнейшем, т.к. если создание временной таблицы будет завернуто в вызов sp_executesql (в который заворачиваются все параметризованные инструкции), то эту временную таблицу никто никогда не увидит. Да, теперь вопрос понял... Автору вроде как переживать не из-за чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 07:52 |
|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
hVostt Автору вроде как переживать не из-за чего. А вдруг MS отменит запросы с параметрами или временные таблицы? Тогда все, суши весла ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 11:53 |
|
SqlCommand: "ad hoc" vs. "parameterized"
|
|||
---|---|---|---|
#18+
Cat2 hVostt Автору вроде как переживать не из-за чего. А вдруг MS отменит запросы с параметрами или временные таблицы? Тогда все, суши весла Не думаю, что отменит, так как слишком много будет засушенных вёсел ) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2020, 12:58 |
|
|
start [/forum/topic.php?fid=20&fpage=10&tid=1398526]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
94ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 209ms |
0 / 0 |