未指定-S选项时osql与sqlcmd默认连接服务器的位置及机制问询
osql与sqlcmd无-S选项时的服务器解析及用户连接差异
测试场景及执行结果
1. 列出网络上所有可用服务器
osql -L-- 返回网络上所有服务器,但不包含其默认连接的服务器sqlcmd -L-- 返回与上述相同的列表
2. 不使用-S选项连接默认服务器
osql -E -d dbname -Q "select current_user"-- 未返回当前用户,而是返回SQL Server中配置的一个用户(该用户存在于Windows注册表中,但不确定osql为何及如何选择它)sqlcmd -E -d dbname -Q "select current_user"-- 报错:Named pipes provider: Could not open connection to SQL Server
3. 使用服务器名称及-S选项连接
osql -E -S servername -d dbname -Q "select current_user"-- 输出与第2点相同sqlcmd -E -S servername -d dbname -Q "select current_user"-- 返回执行该查询的系统登录ID
4. 远程执行命令
osql -E -d dbname -Q "select current_user"-- 输出与第2点相同sqlcmd -E -s servername -d dbname -Q "select current_user"-- 报错:Login failed for computername(其中computername为实际Windows计算机名称)
我已为此钻研多日,想弄清osql的工作机制,以便迁移至sqlcmd。
编辑1: 确认不存在OSQLSERVER环境变量
内容的提问来源于stack exchange,提问作者Sachin Kumar
相关产品推荐
相关产品推荐

