2010-03-17 26 views
133

Estoy leyendo un libro sobre SQL. En ese libro está el término Ad Hoc Query, que no entiendo.¿Qué es Ad Hoc Query?

¿Qué es exactamente una consulta ad hoc?

Respuesta

172

Ad hoc es latino para "con este fin". Puede llamarlo una consulta "sobre la marcha" o una consulta "justa". Es el tipo de consulta SQL sólo tiene que teclear libremente dónde lo necesite

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

... que es una consulta totalmente diferente cada vez que se ejecuta esta línea de código, dependiendo del valor de myId. Lo contrario de una consulta ad hoc es una consulta predefinida, como un Procedimiento almacenado, donde ha creado una única consulta para todo el propósito generalizado de seleccionar de esa tabla (por ejemplo), y pasar el ID como una variable.

+12

@David Hedlund su consulta es vulnerable a 'ataques de inyección SQL '... Debe usar el parámetro. – Parid0kht

+27

@Paridokht: Ciertamente. No defiendo ese uso, estoy explicando el concepto de una consulta ad hoc, que era la pregunta. –

+9

@DavidHedlund: Sí, entiendo ... pero puede ser que sea mejor mencionarlo en su respuesta porque hay usuarios que leen esto y no tienen idea de este ataque. – Parid0kht

-4

En el servidor SQL "Ad Hoc Query" también se utiliza para consultas distribuidas Ad Hoc. Estas son consultas ad hoc en otro servidor a través de OpenRowset u OpenDatasource. Consultas distribuidas Ad Hoc solo se permiten después de configurarlo. Esta es una opción de configuración del Servidor.

+0

esto no se trata de SQL Server. la pregunta no era sobre una solución de empresa particular, sino más bien sobre una comprensión general del significado de consultas ad hoc – arthur

1

También quiero agregar que la consulta ad hoc es vulnerable a los ataques de inyección SQL. Deberíamos intentar evitar su uso y usar SQL parametrizados en su lugar (like PreparedStatement in Java).

+6

Una consulta ad-hoc no es vulnerable a la inyección de SQL. Una consulta no parametrizada que acepta la entrada del usuario es vulnerable a la inyección SQL. – Ben

+0

@Ben Una consulta ad-hoc está siempre sin parametrizar. No se puede atacar con inyección SQL si no exponemos las variables a los usuarios; pero el punto es que la consulta ad-hoc es arriesgada para la Inyección SQL. – xli

20

Una consulta Ad-Hoc es una consulta que no se puede determinar antes del momento en que se emite la consulta. Se crea con el fin de obtener información cuando sea necesario y consiste en SQL construido dinámicamente, que generalmente es construido por herramientas de consulta residentes en el escritorio.

Comprobar: http://www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html

+0

Entonces, si escribo una consulta estática y la ejecuto una vez, ¿no es "ad hoc"? – jumxozizi

0

consultas ad hoc son aquellos que no están ya definido que no son necesarios de forma regular, por lo que no están incluidas en el conjunto típico de informes o consultas

+0

¿Puedes explicar qué estás escribiendo más? ¿Cuál es el "conjunto típico"? ¿te refieres a código compilado? – Ben

-3

un anuncio -Hoc consulta es:

  1. Pregunta planificada.
  2. Pregunta programada previamente.
  3. pregunta de espuela del momento.
  4. Pregunta que no arrojará ningún resultado.
+0

¿Qué significa esto en términos de SQL? Además, no todas las "Preguntas que no arrojarán ningún resultado". son anuncios electrónicos. – jumxozizi

-3

La consulta ad hoc es el tipo de definición de la computadora. Lo que significa que esta consulta está especialmente diseñada para obtener información cuando solo es necesaria. Predefinido consulte esto https://www.youtube.com/watch?v=0c8JEKmVXhU

+0

Creo que "predefinido" es lo opuesto a "ad hoc". – jumxozizi

0

Una consulta Ad-Hoc es una consulta que no se puede determinar antes del momento en que se emite la consulta. Se crea con el fin de obtener información cuando sea necesario y consiste en SQL construido dinámicamente, que generalmente es construido por herramientas de consulta residentes en el escritorio. Una consulta ad hoc no reside en la computadora o en el administrador de la base de datos, sino que se crea dinámicamente según las necesidades del usuario de datos.

En SQL, una consulta ad hoc es un comando/consulta sin apretar escrito cuyo valor depende de alguna variable. Cada vez que se ejecuta el comando, el resultado es diferente, dependiendo del valor de la variable. No se puede predeterminar y generalmente se trata de una consulta SQL de programación dinámica. Una consulta ad hoc es efímera y se crea en tiempo de ejecución.

Cuestiones relacionadas