Windows 计算机已经安装了 ODBC 驱动程序,因此您可能有用于 SQL Server 的 ODBC 驱动程序。如果是这样,那么您也许可以使用 Microsoft 的osql
实用程序从 DOS 运行 T-SQL 语句。这是 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
将要求您安装 Native Client,或至少安装 SNAC(讨论线程:http ://us.generation-nt.com/answer/how-install-only-sqlcmd-exe-utility-help-87134732.html )无需安装整个 Native Client即可运行SQLCMD
(尽管仍然需要安装 SNAC)。我以前没有听说过 SNAC,所以这需要一些研究。我假设安装任何东西都会遇到同样的阻力,所以如果你能克服这种阻力,安装 Native Client 可能是你最好的选择。
至于经过的时间。您可以使用%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
值。如果它确实自动转换,那么您可以在 DOS 的 SQL 语句中进行计算,如下所示:
sqlcmd.exe -b -S myhost -E -d mydatabase -Q "Insert Into MyTable Values ('%EndTime%' - '%StartTime%', 'MyProcess')" -W
(仅供参考 - 我对所有示例都使用了您的伪代码,因此没有进行任何测试。)