Один и тот же подготовленный оператор, несколько баз данных, одна и та же схема

У меня есть несколько баз данных ms sql server x1, x2, x3, ... xn, фактически все того же типа схемы и одна база данных y, которая отличается и содержит данные управления.

Я использую подготовленные операторы jdbc, и бывают случаи, когда один и тот же подготовленный оператор необходимо выполнить одновременно в нескольких базах данных x из одной программы.

Если SQL подготовленного оператора не указывает на базу данных:

Связан ли подготовленный оператор только с сервером, и если он выполняется, выполняется в базе данных, выбранной в соответствии с контекстом, например после заявления USE.

ИЛИ он навсегда связан с базой данных по умолчанию в URL-адресе подключения? Если это так, и я все еще хочу использовать заранее подготовленные операторы, должен ли я создать подготовленный оператор для каждой отдельной базы данных, даже если схемы и операторы в основном идентичны.


person hardya    schedule 13.09.2016    source источник


Ответы (1)


Я почти уверен (но не на 100% уверен), что подготовленный оператор привязан к определенной базе данных. Учитывая, что план запроса должен оценивать статистику индексов и таблиц, которые будут различаться в каждой базе данных.

И поскольку это, похоже, внутренняя система, и SQL-инъекция не может быть проблемой, я бы использовал прямое выполнение или stmt.executeQuery (запрос).

person Rawheiser    schedule 23.09.2016