如何在 PowerBuilder Classic 12.5.2 中连接到 SQL Server 2016?

How do I connect to SQL Server 2016 in PowerBuilder Classic 12.5.2?

我支持用 PB Classic 编写的遗留应用程序,该应用程序具有使用 SQL Server Native Client (SQLNCLI10) 的硬编码连接字符串。但是,SQL Server 2012 之后不支持 Native Client。它在 2014 年可以使用,但不支持 supported。我们有几个数据库现在是 运行 SQL Server 2016,不能使用 SQLNCLI10 或 SQLNCLI11.From 据我所知,我们可以对本机客户端进行更新因为我们不打算使用 SQL Server 2016 中的任何功能,但这似乎更像是一种权宜之计,而不是真正的解决方案。但是,当我尝试使用 DBParm 中的 FileDNS 条目将本机客户端的 DBMS 更改为使用新的 ODBC 驱动程序时,客户端总是提示输入 DSN 文件的位置和其他连接属性。

在 PowerBuilder Classic 中连接到 SQL Server 2016(最好使用 ODBC 13 for SQL Server 2016 驱动程序)的最佳方式是什么?这是我们目前正在使用的(在清理细节之后):

sqlca.DBMS = 'SNC SQL Native Client(OLE DB)'
this.DBParm = "Database='" + as_database + "',Provider='SQLNCLI10',Identity='SCOPE_IDENTITY()',TrimSpaces=1,StaticBind=0,PBCatalogOwner='dbo', appname = 'My Application' , host =' " + lower(ls_machine_name) + "' "

经过反复试验,我能够使用以下方法进行连接:

SQLCA.DBMS = "ODBC"
SQLCA.DBParm = "ConnectString='Driver={ODBC Driver 13 for SQL Server};QuotedId=No;TrustServerCertificate=Yes;Encrypt=Yes;Trusted_Connection=Yes;SERVER=" + SQLCA.ServerName + ";'"

我更进一步,通过将 UID= 和 PWD= 添加到 DBParm 中替换字符串的 Trusted_Connection 部分,使用 SQL 身份验证对其进行了尝试。我还添加了数据库参数(初始字符串只是连接到默认主数据库)。 像这样:

SQLCA.DBParm = "ConnectString='Driver={ODBC Driver 13 for SQL Server};QuotedId=No;TrustServerCertificate=Yes;Encrypt=Yes;UID="+SQLCA.Logid+";PWD="+SQLCA.LogPass+";SERVER=" + SQLCA.ServerName + ";Database="+SQLCA.Database+";'"