Помогите со скриптом плиз

MaxiBek
Дата: 02.02.2009 13:45:02
Коллеги, в программировании не селен хелп плиз.

Хочу собрать статистику по расширению размера файлов логов своих баз данных.
Нужные данные извлекаются коммандой dbcc sqlperf (lofspace), но возвращаемая информация не содержит даты и времени выполнения запроса.
Идея следующая, создаю базу данных следующим скриптом:
use testdatabase
go
CREATE TABLE LogInfo (LogTime datetime, LogName text, LogSize real , LogSpaceUsed real, Satus int)


Соотвественно теперь нужно написать скрипт для джоба, которые не только результаты комманды SQLPERF выложит в мою таблицу, но для каждой строки укажет время выполнения запроса, что-то типа:
insert into loginfo values ( 'select getdate()', exec ('dbcc sqlperf (logspace)') )

Но не работает :-(
Если просто результаты без времени, то все классно работает.
Гавриленко Сергей Алексеевич
Дата: 02.02.2009 14:01:56
CREATE TABLE LogInfo (LogTime datetime DEFAULT (getdate()), LogName text, LogSize real , LogSpaceUsed real, Satus int)
MaxiBek
Дата: 02.02.2009 14:16:27
Гавриленко Сергей Алексеевич,

Идея замечательная, но что-то опять не учитываю:

use testdatabase
go
CREATE TABLE LogInfo (LogName text, LogSize real , LogSpaceUsed real, Satus int, LogTime datetime DEFAULT (getdate()))
go
insert into loginfo exec ('dbcc sqlperf (logspace)')


Но при выполнении вставки получаю сообщение:

Msg 213, Level 16, State 7, Line 1
Insert Error: Column name or number of supplied values does not match table definition.
Гавриленко Сергей Алексеевич
Дата: 02.02.2009 14:18:13
Значит сначала во временную таблицу из процедуры, потом из временной таблицы в постоянную.
Glory
Дата: 02.02.2009 14:21:43
MaxiBek
Гавриленко Сергей Алексеевич,

Идея замечательная, но что-то опять не учитываю:

use testdatabase
go
CREATE TABLE LogInfo (LogName text, LogSize real , LogSpaceUsed real, Satus int, LogTime datetime DEFAULT (getdate()))
go
insert into loginfo exec ('dbcc sqlperf (logspace)')


Но при выполнении вставки получаю сообщение:

Msg 213, Level 16, State 7, Line 1
Insert Error: Column name or number of supplied values does not match table definition.

А почему insert into без перечисления полей ?
MaxiBek
Дата: 02.02.2009 14:26:35
Glory,

В соотвествии с Help Online - там написано, что так нужно когда перекидываются результаты DBCC комманд. И если без этой даты/времени то все прекрасно работает.
Glory
Дата: 02.02.2009 14:29:58
MaxiBek
Glory,

В соотвествии с Help Online - там написано, что так нужно когда перекидываются результаты DBCC комманд. И если без этой даты/времени то все прекрасно работает.

В хелпе по insert exec написано, что перечень полей в insert должен совпадать по количеству с результатом exec
MaxiBek
Дата: 02.02.2009 14:36:12
Glory,

Вот ведь... Посоветуйте плиз как выкрутиться, очень нужна эта дата время - буду графики строить
Glory
Дата: 02.02.2009 14:39:36
MaxiBek
Glory,

Вот ведь... Посоветуйте плиз как выкрутиться, очень нужна эта дата время - буду графики строить

Вы не можете перечислить в insert into нужные поля ? И что вам мешает ?
MaxiBek
Дата: 02.02.2009 15:07:36
Glory,

use testdatabase
go
IF OBJECT_ID ('loginfo', 'U') IS NULL
CREATE TABLE LogInfo (LogName text, LogSize real , LogSpaceUsed real, Satus int, LogTime datetime DEFAULT (getdate())) ;
GO
create table #tt (LogName text, LogSize real , LogSpaceUsed real, Satus int)
insert into #tt exec('dbcc sqlperf (logspace)')
insert into loginfo (LogName, LogSize, LogSapceUsed, logtime) values (select * from #tt, getdate())
drop table #tt


При попытке вставить данные в постоянную таблицу получаю:
Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'select'.
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near ')'.