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

Откуда:
Сообщений: 116
Настраиваю автоматическое удаление старого бэкапа. Написал код удаления:
-- Включение разрешения изменения расширенных опций.
	EXEC sp_configure 'show advanced options', 1

	-- Обновление текущих настроек расширенных опций.
	RECONFIGURE

	-- Включение возможности запуска внешних программ.
	EXEC sp_configure 'xp_cmdshell', 1

	-- Обновление текущих настроек для запуска внешних программ.
	RECONFIGURE

--DECLARE @DAYSTR VARCHAR(3) = '1'
DECLARE @DAYSTR VARCHAR(3) = CAST(DAY(GETDATE()) AS VARCHAR(2))
IF @DAYSTR = '1' 	
	EXEC master..xp_cmdshell 'IF EXIST F:\backup\torg30.bak (del torg30.bak)' 
	EXEC master..xp_cmdshell 'IF EXIST F:\backup\torg31.bak (del torg31.bak)' 
 
	DECLARE @PREVDAY  VARCHAR(2) = CAST( CAST(@DAYSTR AS INT) -1 as  VARCHAR(2) )
	DECLARE @STRCMD NVARCHAR(100) = 'IF EXIST F:\backup\torg' + @PREVDAY  + '.bak (del torg' + @PREVDAY  + '.bak)'
	EXEC xp_cmdshell  @STRCMD 
END 

Но выдает следующую ошибку:
Сообщение 102, уровень 15, состояние 1, строка 22
Неправильный синтаксис около конструкции "END".

На сайте Microsoft есть аналогичные примеры:
http://msdn.microsoft.com/en-us/library/aa260689(SQL.80).aspx
Но почему же тогда у меня ругается? Чего не хватает или что лишнее?
13 ноя 13, 16:59    [15123219]     Ответить | Цитировать Сообщить модератору
 Re: нужна помощь с синтаксисом при вызове команд системы в условиях  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
IF <condition> BEGIN ..... END потому что
13 ноя 13, 17:01    [15123242]     Ответить | Цитировать Сообщить модератору
 Re: нужна помощь с синтаксисом при вызове команд системы в условиях  [new]
okwell5
Member

Откуда:
Сообщений: 116
А в этом случае и на элз ругается:
DECLARE @DAYSTR VARCHAR(3) = CAST(DAY(GETDATE()) AS VARCHAR(2))
IF @DAYSTR = '1' 	
	EXEC master..xp_cmdshell 'IF EXIST F:\backup\torg30.bak (del torg30.bak)' 
	EXEC master..xp_cmdshell 'IF EXIST F:\backup\torg31.bak (del torg31.bak)' 
ELSE 
	DECLARE @PREVDAY  VARCHAR(2) = CAST( CAST(@DAYSTR AS INT) -1 as  VARCHAR(2) )
	DECLARE @STRCMD NVARCHAR(100) = 'IF EXIST F:\backup\torg' + @PREVDAY  + '.bak (del torg' + @PREVDAY  + '.bak)'
	EXEC xp_cmdshell  @STRCMD 
END 


Сообщение 156, уровень 15, состояние 1, строка 18
Неправильный синтаксис около ключевого слова "ELSE".
Сообщение 102, уровень 15, состояние 1, строка 22
Неправильный синтаксис около конструкции "END".
13 ноя 13, 17:01    [15123247]     Ответить | Цитировать Сообщить модератору
 Re: нужна помощь с синтаксисом при вызове команд системы в условиях  [new]
Glory
Member

Откуда:
Сообщений: 104751
okwell5
Но почему же тогда у меня ругается? Чего не хватает или что лишнее?

Сообщение 102, уровень 15, состояние 1, строка 22
Неправильный синтаксис около конструкции "END".
13 ноя 13, 17:02    [15123252]     Ответить | Цитировать Сообщить модератору
 Re: нужна помощь с синтаксисом при вызове команд системы в условиях  [new]
okwell5
Member

Откуда:
Сообщений: 116
locky, все, забыл, СПАСИБО!
13 ноя 13, 17:02    [15123258]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить