2011-10-13 25 views
16

¿Hay algún Validator SQL que pueda verificar la sintaxis contra múltiples servidores de bases de datos?¿Hay algún Validator SQL que pueda verificar la sintaxis contra múltiples servidores de bases de datos?

Por ejemplo, me gustaría comprobar si una consulta en particular funcionará contra Oracle, MySQL y SQL Server.

Me preocupa más la sintaxis SQL que el esquema real que se consulta, por lo que una herramienta que pueda detectar errores de sintaxis importantes, como detectar que la cláusula limit no es compatible con SQL Server y Oracle, sería suficiente.


EDIT:

Varias respuestas han sugerido comprobación de sintaxis para un DBMS en particular o para el estándar ANSI.

Lo que estoy buscando es una posibilidad de apuntar a una especie de unión de funciones entre dos o más bases de datos (por ejemplo, SQL Server y Oracle). Me gustaría poder usar cualquier característica SQL que sea compatible con todos los DBMS a los que me dirijo en una aplicación en particular.

No estoy seguro de si vale la pena. Creo que depende de la cantidad de características no ANSI compartidas por varias bases de datos. Si hay muy pocos, entonces quizás sea mejor apuntar al estándar ANSI.

+0

Tal vez la cáscara SQLite podría ayudar. Sin embargo, las combinaciones IZQUIERDA y LLENA no están implementadas, y a diferencia de Oracle, puede SELECCIONAR desde nada, mientras que en Oracle debe usar DUAL. – Benoit

+0

¿Cuántas bases de datos está escribiendo? ¿O es este un intento de escribir algún middleware db agnostic? Tal vez intente dbms_sql.parse para Oracle, algo similar (?) Para otros dbms. – tbone

+0

Qué versiones de cada base de datos debe validar también. –

Respuesta

7

No estoy al tanto de cualquier que son tan específicos, estos se compruebe que las declaraciones son válidas ANSI 92/99/2003 ...

http://developer.mimer.com/validator/index.htm

que obtendrá el 99% de la camino (especialmente si sólo se están haciendo las operaciones CRUD)

tal vez si usted sabe qué palabras reservadas son utilizados por qué base de datos se podría rodar su propio corrector sencilla .. véase: How to find if a column name is a reserved keyword across various databases

(como ya se mencionó) Si su objetivo es crear un sistema agnóstico de bases de datos, piense en utilizar una herramienta de terceros, por ejemplo: entityspaces

+1

Perdí un montón de tiempo en un simple error de sintaxis, no cerré los paréntesis (corchetes redondos) en la declaración del procedimiento almacenado. Este enlace me ayudó ... [http://developer.mimer.com/validator/parser200x/](http://developer.mimer.com/validator/parser200x/) – Matija

Cuestiones relacionadas