visual studio origenes origen funciona datos conexion conectar coneccion con como cadena agregar administrador mysql sql-server oracle sqlite postgresql

mysql - studio - ¿Cuál es el número máximo de parámetros permitidos por tipo de proveedor de base de datos?



odbc driver (4)

Hay un límite de 2,100 parámetros que se pueden pasar a una consulta del servidor Sql, es decir, a través de ADO.Net, pero ¿cuáles son los límites documentados para otras bases de datos comunes utilizadas por los desarrolladores de .Net? En particular, estoy interesado en:

  • Oracle 10g / 11g
  • MySql
  • PostgreSql
  • Sqlite

¿Alguien sabe?


El protocolo de conexión de PostgreSQL usa enteros de 16 bits para el conteo de parámetros en el mensaje de enlace ( http://www.postgresql.org/docs/9.4/static/protocol-message-formats.html ).

Por lo tanto, el protocolo PostgreSQL no permite más de 65535 parámetros para una sola declaración. Esto es, está bien para enviar un solo comando ado.net con dos instrucciones, cada una de las cuales tiene 65535 parámetros.


En jOOQ, hemos solucionado estas limitaciones al incluir valores de enlace una vez que alcanzamos el número relevante por proveedor. Los números están documentados aquí . No todos los números son necesariamente los correctos de acuerdo con la documentación del proveedor, los hemos descubierto empíricamente por prueba y error a través de JDBC. Son (sin vincularlos a una versión específica):

  • Ingres: 1024
  • Microsoft Access: 768
  • Oráculo: 32767
  • PostgreSQL: 32767
  • SQLite: 999
  • SQL Server: 2100 (dependiendo de la versión)
  • Sybase ASE: 2000

Otras bases de datos no parecen tener ninguna limitación, al menos no las hemos descubierto todavía (aunque no hemos estado buscando mucho más allá de 100000).


La respuesta correcta para PostgreSQL parece ser 34464, cuando se habla de parámetros vinculados a una consulta. La respuesta 100 sigue siendo correcta para el número de parámetros de una función.


Oráculo: 64,000. Source

MySQL:

  • Por defecto, no hay límite. El "protocolo de texto" de MySQL requiere que la biblioteca cliente .NET sustituya todos los parámetros antes de enviar el texto de comando al servidor; no hay un límite del lado del servidor que pueda aplicarse, y el cliente no tiene límite (que no sea la memoria disponible).
  • Si se usan "declaraciones preparadas" llamando a MySqlCommand.Prepare() (y especificando IgnorePrepare=false en la cadena de conexión), entonces hay un límite de 65,535 parámetros (porque num_params tiene que caber en dos bytes ).

PostgreSql: EDIT: 34464 para una consulta y 100 para una función según la respuesta de Magnus Hagander (la respuesta se copió aquí para proporcionar un único punto de referencia)

SqlLite: 999 (SQLITE_MAX_VARIABLE_NUMBER, que por defecto es 999, pero se puede reducir en tiempo de ejecución) - Y para las funciones, el valor predeterminado es 100 parámetros. Ver la sección 9 de la documentación de límites de tiempo de ejecución.