我已在项目中使用freeTDS,但连接到默认实例。
现在我需要连接到一个命名实例。
我能够使用tsql列出所有主机实例,但是我遇到连接到实例的问题。 它是一个集群的SQL Server 2016。
# tsql -LH cl04-mssql-sccm
...
ServerName CL04-MSSQL-SCCM
InstanceName MSSQL_INST_SCCM
IsClustered Yes
Version 13.0.1601.5
tcp 59841
np \\CL04-MSSQL-SCCM\pipe\MSSQL$MSSQL_INST_SCCM\sql\query
...
我在odbc.ini中有以下会话:
[ATIVOSDESOFTWARE]
Driver=FreeTDS
Description=AtivosDeSoftware
QuoteID=Yes
AnsiNPW=Yes
Server=cl04-mssql-sccm
Port=59841
;Instance=MSSQL_INST_SCCM
Database=CM_CM3
TDS_Version=7.4
ClientCharset=UTF-8
根据文档,端口和实例是互斥的。 使用端口,osql工作。使用实例,连接失败:
[S1000][unixODBC][FreeTDS][SQL Server]Unable to connect to data source
[08S01][unixODBC][FreeTDS][SQL Server]Unable to connect: Adaptive Server is unavailable or does not exist
[ISQL]ERROR: Could not SQLConnect
在freetds.log上我有以下一行:
login.c:447:invalid port number
我在论坛上发现了一些类似的情况,但解决方案始终是使用硬编码端口。我想避免它。
有人知道我做错了吗?