检测是否安装了SQLCMD.exe的正确方法?

Iss*_*ram 10 .net c# sqlcmd

我正在创建一个类库,它将.SQL文件作为输入(FileInfo)和一个连接字符串.然后它尝试对连接执行sql文件.

我决定支持Microsoft的SMO和SQLCMD.exe

在测试中,我注意到在我的环境中的许多机器上,默认情况下没有安装SQLCMD.尝试运行进程SQLCMD.exe时出现程序错误.

在不搜索整个硬盘的情况下寻找它的正确方法是什么?是否有一个通用的注册表位置,指定它是否已安装?通常在安装时,我认为设置了PATH位置.

非常感谢.

Pre*_*gha 10

我有一台64位机器,64位SQL SERVER(2k8 R2)和我的SQLCMD.EXE c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE.

它也在路上.

您可以直接从SQL Server注册表位置查找路径:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\ClientSetup\path
Run Code Online (Sandbox Code Playgroud)

或者针对不同版本的变体.

这里最大的问题是SQLCMD是客户端工具的一部分,而不是SQL Server,所以我认为你不能要求SQL Server告诉你.当然,除非你在服务器上运行.

  • 另请注意,sql2012工具安装到..Microsoft SQL Server\110\Tools ..(即不是'100'),如果您通过SqlCmdLnUtils.msi安装嵌入式工具,它不会被放入路径.使用包含特定于版本的编号的reg密钥似乎是不明智的.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SqlCmdLnUtils\CurrentVersion怎么样? (5认同)

小智 10

启动cmd.exe并使用

where sqlcmd.exe
Run Code Online (Sandbox Code Playgroud)