可以通过 tsql 连接到 SQL Server,但不能从 bsqldb 连接

dhe*_*hew 5 freetds

安装 FreeTDS 后,我能够使用 tsql 连接到我们的 SQL Server,但还不能通过 bsqldb。使用 bsqldb,即使 db 被指定为 testDB.

serverName 设置在 /etc/freetds.conf

[serverName]
        host = database.windows.net
        port = 1433
        tds version = 8.0
Run Code Online (Sandbox Code Playgroud)

使用 tsql:

[gpadmin@mdw ~]$ /usr/bin/tsql -S serverName -U user -D testDB -P password
Run Code Online (Sandbox Code Playgroud)

工作正常

使用 bsqldb,它会尝试连接到 master,即使 db 被指定为 testDB。

[gpadmin@mdw ~]$ /usr/bin/bsqldb -U user -P password -S serverName \
                                 -D testDB -i tag.sql -o tag.csv

Msg 4060, Level 11, State 1
Server 'fj5j2jtt5k', Line 1
        Cannot open database "master" requested by the login. The login failed.
bsqldb: error: severity 11 > 10, exiting
Run Code Online (Sandbox Code Playgroud)

TCZ*_*CZ8 2

我知道这是一个老问题,但为了“由谷歌人驱动”,我将尝试回答。

我假设您知道反斜杠不属于您的命令行,并且输出中显示的服务器名称是您为隐藏实际名称而随机键入的名称。

检查此页面http://www.freetds.org/userguide/confirminstall.htm

它提供了有关对您的配置进行故障排除的信息。

使用此命令确认您的实例/服务器配置:

tsql -LH servername
Run Code Online (Sandbox Code Playgroud)

确保您指向正确的端口,记住您只能指定一个实例或一个端口,不能同时指定两者。

确认设置后,使用此命令连接到服务器并打开交互式提示,您可以从中在服务器上运行 SQL 命令:

tsql -S servername -U username
Run Code Online (Sandbox Code Playgroud)

然后您必须输入您的密码。请记住,该用户应在数据库服务器本身上创建,并具有访问数据库的适当权限。如果您执意要使用某些目录服务而不是本地用户,请阅读手册http://www.freetds.org/userguide/

登录后输入:

USE databasename
GO
Run Code Online (Sandbox Code Playgroud)

您基本上要确保连接在正确的位置,然后您实际上能够登录,然后手动尝试使用数据库。这个过程应该可以让您更好地了解正在发生的事情。

如果之后它仍然困扰您的数据库“master”,我会说检查您的服务器/实例配置。另请确保您使用正确的 TDS 协议版本。