2010-03-17 4 views

ответ

172

Ad hoc является латинским для "для этой цели". Вы можете назвать это «на лету», или запрос «просто так». Это вид запросов SQL вы просто неплотно типа, где вам это нужно

var newSqlQuery = "SELECT * FROM table WHERE id = " + myId; 

... что это совершенно другой запрос каждый раз, когда строка кода выполняется, в зависимости от значения myId. Противоположностью специального запроса является предопределенный запрос, такой как хранимая процедура, где вы создали один запрос для всей обобщенной цели выбора из этой таблицы (скажем) и передаете идентификатор в качестве переменной.

+12

@David Hedlund Ваш запрос уязвим для «SQL-инъекций» ... Вы должны использовать параметр. – Parid0kht

+27

@Paridokht: Конечно. Я не защищаю это использование, я объясняю концепцию специального запроса, в чем был вопрос. –

+9

@DavidHedlund: Да, я понимаю ... но может быть, лучше упомянуть об этом в вашем ответе, потому что есть пользователи, которые читают это и не имеют представления об этой атаке. – Parid0kht

-4

В Sql-сервере «Ad Hoc Query» также используется для распределенных запросов Ad Hoc. Это специальные запросы на другом сервере через OpenRowset или OpenDatasource. Специальные распределенные запросы разрешены только после настройки. Это параметр конфигурации сервера.

+0

Речь идет не о сервере sql. вопрос был не о конкретном решении для предприятий, а скорее об общем понимании смысла специальных запросов. – arthur

1

Также хочу добавить, что ad hoc-запрос уязвим для атак SQL-инъекций. Мы должны попытаться избежать его использования и вместо этого использовать параметризованные SQL-запросы (like PreparedStatement in Java).

+6

Специальный запрос не уязвим для SQL-инъекции. Непараметризированный запрос, который принимает ввод пользователя, уязвим для SQL Injection. – Ben

+0

@Ben Запрос ad-hoc всегда непараметризирован. Это не может быть атака SQL-инъекцией, если мы не предоставляем переменные пользователям; но точка ad-hoc-запроса рискованна для SQL-инъекции. – xli

20

Ad-Hoc Query - это запрос, который не может быть определен до момента выдачи запроса. Он создается для получения информации, когда возникает необходимость, и состоит из динамически построенного SQL, который обычно создается инструментами запросов для резидентных пользователей.

Проверил: http://www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html

+0

Итак, если я набираю статический запрос и запускаю его один раз, это не «ad hoc»? – jumxozizi

0

специальные запросы являются те, которые уже не определены, которые не нужны на регулярной основе, поэтому они не включены в типовой набор отчетов или запросов

+0

Можете ли вы объяснить, что пишете больше? Что такое «типичный набор»; вы имеете в виду скомпилированный код? – Ben

-3

с объявлением -Hoc запрос:

  1. Запланированный вопрос.
  2. Предпланированный вопрос.
  3. spur вопрос.
  4. Вопрос, который не вернет никаких результатов.
+0

Что это означает в терминах SQL? Кроме того, не все «Вопросы, которые не вернут никаких результатов». являются ad hocs. – jumxozizi

-3

Специальный запрос - это определение компьютера. Это означает, что этот запрос специально разработан для получения любой информации, когда это необходимо. Предопределенные. https://www.youtube.com/watch?v=0c8JEKmVXhU

+0

Я думаю, что «предопределенный» - это противоположность «ad hoc». – jumxozizi

0

Ad-Hoc Query - это запрос, который не может быть определен до момента выдачи запроса. Он создается для получения информации, когда возникает необходимость, и состоит из динамически построенного SQL, который обычно создается инструментами запросов для резидентных пользователей. Специальный запрос не находится в компьютере или диспетчере баз данных, но динамически создается в зависимости от потребностей пользователя данных.

В SQL запрос ad hoc представляет собой свободно типизированную команду/запрос, значение которого зависит от некоторой переменной. Каждый раз, когда выполняется команда, результат различается в зависимости от значения переменной. Он не может быть предопределен и обычно попадает под динамическое программирование SQL-запроса. Специальный запрос недолговечен и создается во время выполнения.

Смежные вопросы