Я написал сценарий, который генерирует имя файла резервной копии базы данных, создает резервную копию базы данных и затем восстанавливает ее как копию с новым именем базы данных. Имя основано на данных о дате/времени.EXEC для использования базы данных
Я тогда должен указать USE
эту базу данных в сценарии, а затем отключить все триггеры.
Однако, это не работает:
DECLARE @Use VARCHAR(50)
SET @Use = 'USE ' + @NewDatabaseName
EXEC(@Use)
Запуск вручную - база данных не получает 'USED'.
Как я могу выполнить оператор USE
с переменной?
Я пробовал sp_executesql
, а также с таким же результатом. База данных не изменилась.
DECLARE @sqlCommand nvarchar(1000)
SET @sqlCommand = 'USE ' + @NewDatabaseName
EXECUTE sp_executesql @sqlCommand
Похоже, мне, возможно, понадобится войти в режим sqlcmd? На самом деле надеяться не на.
вам нужно использовать sp_executesql – realnumber3012
Я смотрел на это, но мне кажется, что ему нужно несколько параметров, и я боюсь понять, что они будут, в случае заявления USE. – Craig
Просто интересно: ваше 'основанное на данных базы данных даты/времени? Превышает 46 символов? – cha