Компьютеры Windows поставляются с уже установленными драйверами ODBC, поэтому у вас, вероятно, есть драйвер ODBC для SQL Server. Если это так, то вы можете получить утилиту Microsoft osql
для запуска операторов T-SQL из DOS. Вот документы для него в MSDN:
http://msdn.microsoft.com/en-us/library/aa214012(v=SQL.80).aspx
Он был разработан для SQL Server 2000, поэтому могут возникнуть проблемы с подключением к более поздним версиям SQL Server, но попробовать стоит. Если это работает, вам не нужно будет устанавливать ничего особенного для подключения к вашему SQL-серверу (хотя вам может потребоваться создать имя источника данных ODBC для сервера...). В Windows Vista+ нажмите Пуск и введите ODBC, чтобы открыть редактор источников данных ODBC.
Использование SQLCMD
потребует от вас установки собственного клиента или, по крайней мере, SNAC (тема обсуждения: http://us.generation-nt.com/answer/how-install-only-sqlcmd-exe-utility-help-87134732.html), чтобы просто запустите SQLCMD
без установки всего Native Client (однако SNAC все же необходимо установить). Я раньше не слышал о SNAC, так что это потребует небольшого исследования. Я предполагаю, что установка чего-либо будет встречена с таким же сопротивлением, поэтому, если вы сможете преодолеть это сопротивление, установка собственного клиента, вероятно, будет вашим лучшим выбором.
Что касается прошедшего времени. Вы можете использовать %DATE% %TIME%
для получения текущей даты/времени. Таким образом, вы можете использовать что-то вроде следующего, чтобы зафиксировать время начала, запустить свой процесс, а затем зафиксировать время окончания - опубликовать их все в базе данных:
set StartTime=%DATE% %TIME%
hyperioncommandlineshell.cmd /a:parm1 /b:parm2 /c:parm3
set EndTime=%DATE% %TIME%
sqlcmd.exe -b -S myhost -E -d mydatabase -Q "Insert Into MyTable Values ('%StartTime%', 'MyProcess', '%EndTime%')" -W
Вы не сможете выполнить вычисления StartTime - EndTime
в самой DOS, но вы можете сохранить время начала и окончания в таблице и использовать для этого SQL.
Формат %DATE%
и %TIME%
основан на формате, на использование которого настроена машина. Вы можете ввести echo %DATE% %TIME%
в командной строке DOS, чтобы увидеть, как он отформатирован для вас. Скорее всего, вам придется хранить эти значения в полях varchar
, поскольку формат может не преобразовываться автоматически в значение datetime
. Если он конвертируется автоматически, то вы можете выполнить вычисления в операторе SQL из DOS, например:
sqlcmd.exe -b -S myhost -E -d mydatabase -Q "Insert Into MyTable Values ('%EndTime%' - '%StartTime%', 'MyProcess')" -W
(К вашему сведению, я использовал ваш псевдокод для всех примеров, поэтому ничего не тестировалось.)
person
James L.
schedule
07.12.2012