同一.bat文件中的 SQL 安装和 sqlcmd 出现问题



我正在尝试使用单个.bat文件来:1( 在 Windows 7 Professional 64 位计算机上从 SQLEXPR_x64_ENU.exe 安装 SQL Server 2008 R2 Express,以及2( 安装完成后运行一些.sql脚本。

似乎如果 sqlcmd 从运行安装的同一.bat文件运行,则 sqlcmd 将失败并显示以下错误:"'sqlcmd' 未被识别为内部或外部命令、可操作程序或批处理文件。

如果安装和.sql脚本是从单独的.bat文件运行的,那么我没有问题(所以我知道问题不在于sqlcmd语法(。我尝试使用单个.bat并在新窗口中运行sqlcmd命令(start cmd/c "sqlcmd ..."(,并从原始.bat文件中调用第二个包含sqlcmd命令的.bat文件(\filepath\file.bat(,但在每种情况下都会发生相同的错误。

我不希望用户必须启动多个.bat文件,因为这会带来以错误顺序运行.bat文件、运行一个但不运行另一个等问题。

我的两个问题是:

  1. 有谁知道为什么会这样?
  2. 是否有仅涉及启动单个.bat文件的解决方案?

怕我不能 100% 确定这个问题,我还不能将其添加到评论中,所以我必须把它放在这里。

1.有谁知道为什么会这样?

  • 我想这正在发生,因为当您安装SQL Server时,它将向Windows环境变量添加特定路径。由于批处理脚本用于安装 SQL Server 版本,我猜它不会刷新 Windows 环境变量,这意味着 C:\Program Files\Microsoft SQL Server\100\Tools\Binn\ 中包含的 SQLCMD.exe 文件(或者无论您在哪里安装它都没有缓存(。
2.Is 有只

涉及启动单个.bat文件的解决方案吗?

  • 如果每次都将其安装到默认位置,例如 C:\Program Files\Microsoft SQL Server。然后,您可以直接从那里启动SQLCMD。即

C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.exe -q etc....

您可能值得为该路径创建一个变量以使其更容易。

我不知道批处理脚本中刷新或查找新的Windows环境变量的过程,但是我认为这是可能的原因。

最新更新