Я получил это T-SQL сниппет:заявление «USE @dbname» не работает, почему? Как это сделать?
DECLARE @db_name varchar(255);
SET @db_name = 'MY_DATABASE'; -- assuming there is database called 'my_database'
USE @db_name -- this line ends with error "Incorrect syntax near '@db'."
Но ИСПОЛЬЗОВАТЬ с переменной (третьей строке фрагмента кода) не работает. Почему это не работает?
Лично я бы сказал, что у вас проблема с дизайном, если вы изменяете имена баз данных на лету в запросах (если только вы не выполняете работу администратора). Почему вы хотите динамически указывать имя базы данных? Может быть, если бы мы поняли, почему мы могли бы получить лучшее решение, чем динамический SQL (чего следует избегать в производственном коде, если это возможно по многим причинам). – HLGEM
Я просто хотел легко перебрать несколько наборов баз данных и выполнить некоторую обработку (задача, связанная с администратором). Вид этого в псевдокоде: DatabaseList = { "DB1", "DB2", "DB3"} Еогеасп (дБ базы данных в DatabaseList) { ИСПОЛЬЗОВАНИЯ дБ; INSERT INTO table VALUES (value1, value2) } –
'TSQL' считается инструментом для работы с базами данных, а не с мета-базами данных. Обычно задачи метабазы (например, описанные вами) выполняются с использованием внешнего инструмента, такого как скрипт Perl или PHP, который будет подключаться к каждой базе данных по отдельности и запускать требуемый запрос. – Quassnoi