4

我正在尝试使用单个 .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 文件的解决方案?
4

1 回答 1

5

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

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

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

2.是否有只涉及启动单个 .bat 文件的解决方案?

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

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

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

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

于 2013-09-25T16:25:58.720 回答