xp_readerrorlog "Неверный тип параметра" с переменной
Я пытаюсь написать код для запроса журнала ошибок SQL из экземпляра SQL 2008R2. Вот что у меня есть:
declare @Start_Time DATETIME = NULL;
declare @End_Time DATETIME = NULL;
IF @Start_Time IS NULL
SELECT @Start_Time = GETDATE()-1
IF @End_Time IS NULL
SELECT @End_Time = GETDATE()
select @start_time start_time, CONVERT(VARCHAR(19),@start_time,120) conv_s_time
select @End_time end_time, CONVERT(VARCHAR(19),@End_time,120) conv_e_time
EXEC xp_ReadErrorLog 0, 1, '', '', '2015-09-17 11:47:16', '2015-09-18 11:47:16'
EXEC xp_ReadErrorLog 0, 1, '', '', ' + CONVERT(VARCHAR(19),@Start_Time,120) '
EXEC xp_ReadErrorLog 0, 1, '', '', ' + CONVERT(VARCHAR(19),@Start_Time,120) ' , ' + CONVERT(VARCHAR(19),@End_Time,120) '
Выход этого:
start_time conv_s_time
2015-09-17 11:59:10.617 2015-09-17 11:59:10
end_time conv_e_time
2015-09-18 09:35:10.617 2015-09-18 09:35:10
LogDate ProcessInfo Text
< 2000+ rows of data >
LogDate ProcessInfo Text
< 45,000+ rows of data >
Msg 22004, Level 12, State 1, Line 0
Error executing extended stored procedure: Invalid Parameter Type
Вызов xp_ReadErrorLog работает с двумя жестко закодированными датами (начало и конец) и с одной переменной в качестве даты начала, но завершается неудачно, когда в качестве переменных указаны даты начала и окончания. Кто-нибудь есть какие-либо предложения о том, почему я не могу использовать переменные для обоих параметров в вызове xp_ReadErrorLog?
Любая помощь приветствуется.
кругозор
0 ответов
---------------- SQL Script -----------------------------
Declare @Today varchar(50)
declare @tomorrow varchar(50)
declare @Statement nvarchar(100)
set @today = (select convert(varchar(8), getdate(), 112))
Print @Today
set @Tomorrow= (select CONVERT(VARCHAR(10), GETDATE()-1, 112))
Print @tomorrow
Set @Statement = 'EXEC xp_readerrorlog 0,2, N''error'', N''Failed'', '+'N'''++@tomorrow+''''++','+ ++'N'''+@today+''''
Print @Statement
exec sp_executesql @Statement
----------------- Результат ---------------------------