|
Туплю с запросом
|
|||
---|---|---|---|
#18+
Добрый день. В большем запросе нашёл не выполняющийся кусок. Максимально упростил для проверки, но всё равно не работает. Вроде уже похожие конструкции использовал, уверен, что сейчас я туплю( Требуется переключить контекст на базу данных указанную через переменную. Через принт выдаёт верное и для имени базы и для команды. Текст команды, если подставить, то работает. Но при запуске запроса ничего не выполняется. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
При этом есть старый код с частью, которая спокойно работает. Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 12:06 |
|
Туплю с запросом
|
|||
---|---|---|---|
#18+
Danion, "Changes in database context last only to the end of the sp_executesql statement." (c) документация Код: sql 1. 2. 3.
outputmaster tempdb master ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 12:12 |
|
Туплю с запросом
|
|||
---|---|---|---|
#18+
Для понимания происходящего: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 12:13 |
|
Туплю с запросом
|
|||
---|---|---|---|
#18+
komrad, Я правильно понял, что остаётся для базы в которой запущен скрипт? Для другой только в одном запросе с use 'имя базы'? Не очень хороший момент для меня, нужно запустить здоровый скрипт от коллег по нескольким базам подходящим под условие. И переключение через курсор на нужную выглядело удобным( Спасибо за ответы, понял как тут реально выполняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 12:17 |
|
Туплю с запросом
|
|||
---|---|---|---|
#18+
Danion komrad, Я правильно понял, что остаётся для базы в которой запущен скрипт? по окончанию работы sp_executesql контекст возвращается в исходную базу Danion Для другой только в одном запросе с use 'имя базы'? в таком варианте исполнения - да Danion Не очень хороший момент для меня, нужно запустить здоровый скрипт от коллег по нескольким базам подходящим под условие. И переключение через курсор на нужную выглядело удобным( найдите все базы, где нужно выполнить и далее Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 12:23 |
|
Туплю с запросом
|
|||
---|---|---|---|
#18+
komrad, С данным скриптом оказалось похоже легче, чем ожидалось. Базы клоны с одинаковыми объектами, просто добавил USE [' + @BD_name + '] в начале выполнения переменной кода коллег. А вообще можно как-то переключить на другую базу не для выполнения одной строки с USE [' + @BD_name + ']? Указание сразу с именем базы (например: use msdb) переключает то на указанную базы для всего кода выполняемого после. Какой-то аналог через переменную существует? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 12:37 |
|
Туплю с запросом
|
|||
---|---|---|---|
#18+
Danion, используйте sqlcmd.exe + переменные для выполнения административных задач. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 13:18 |
|
Туплю с запросом
|
|||
---|---|---|---|
#18+
Danion Какой-то аналог через переменную существует? можно нагенерировать скрипт и выполнить его в новом окне ssms в режиме sqlcmd (Alt+Q+M) генерация Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
получившийся скрипт Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
результат на картинке в файле c:\temp\file1.sql: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2021, 13:40 |
|
|
start [/forum/topic.php?fid=46&msg=40068890&tid=1684733]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
191ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
104ms |
get tp. blocked users: |
2ms |
others: | 303ms |
total: | 646ms |
0 / 0 |