Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 изменить базу в динамическом запросе  [new]
AlesandraFioni
Member

Откуда: Київ
Сообщений: 59
Всем привет!
Кто сможет подсказать - написан курсор для обрезания файлов и логов через динамический запрос.
Но выдаёт ошибку:
Сообщение 911, уровень 16, состояние 4, строка 25
Database '
use my_db_name;
select * from sys' does not exist. Make sure that the name is entered correctly.

В чём может быть проблема?

declare @nmDB nvarchar (max)

declare cursor_nmDB cursor local for
	select name from sys.databases
	where database_id >=5

open cursor_nmDB
fetch next from cursor_nmDB
	into @nmDB
	
	WHILE @@FETCH_STATUS=0
	BEGIN
		declare @sql nvarchar (max)
		
		declare @getCurrentTime datetime = getdate()

		set @sql = '
		use '+@nmDB +';
	    select * from sys.database_files;
		DBCC SHRINKFILE (' + @nmDB + ');
		DBCC SHRINKFILE (' + @nmDB + '_log);
		select * from sys.database_files;'
		print @sql
		
		exec @sql
		declare @getCurrentTime2 datetime = getdate()
		print datediff (ms, @getCurrentTime2, @getCurrentTime)
		print convert(VARCHAR(34),getdate(),121)

	FETCH NEXT from cursor_nmDB
	into @nmDB
	end

	CLOSE cursor_nmDB;
	DEALLOCATE cursor_nmDB;
15 сен 15, 17:33    [18152499]     Ответить | Цитировать Сообщить модератору
 Re: изменить базу в динамическом запросе  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
AlesandraFioni,

exec (@sql)
15 сен 15, 17:37    [18152511]     Ответить | Цитировать Сообщить модератору
 Re: изменить базу в динамическом запросе  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
AlesandraFioni
В чём может быть проблема?
У вас же делается print @sql

Вот и посмотрите, что там в @sql, попробуйте выполнить
15 сен 15, 17:38    [18152516]     Ответить | Цитировать Сообщить модератору
 Re: изменить базу в динамическом запросе  [new]
ааавввв
Guest
AlesandraFioni,

Обрати внимание на уровень вложенности, когда собираешь строку
15 сен 15, 17:39    [18152519]     Ответить | Цитировать Сообщить модератору
 Re: изменить базу в динамическом запросе  [new]
AlesandraFioni
Member

Откуда: Київ
Сообщений: 59
alexeyvg
AlesandraFioni
В чём может быть проблема?
У вас же делается print @sql

Вот и посмотрите, что там в @sql, попробуйте выполнить


то что принтится - прекрасно выполняется:)
15 сен 15, 17:49    [18152569]     Ответить | Цитировать Сообщить модератору
 Re: изменить базу в динамическом запросе  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31948
WarAnt
AlesandraFioni,

exec (@sql)
А, точно, там же не выполнялся @sql :-)

exec без скобок - это выполнение процедуры с заданным именем
15 сен 15, 17:49    [18152576]     Ответить | Цитировать Сообщить модератору
 Re: изменить базу в динамическом запросе  [new]
AlesandraFioni
Member

Откуда: Київ
Сообщений: 59
WarAnt
AlesandraFioni,

exec (@sql)


EXEC sys.sp_executesql @SQL
заработало :) спасибо.
15 сен 15, 17:50    [18152580]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить