我支持用 PB Classic 编写的遗留应用程序,该应用程序具有使用 SQL Server Native Client (SQLNCLI10) 的硬编码连接字符串。但是,SQL Server 2012 之后不支持 Native Client。它在 2014 年有效,但不是 supported .我们有几个现在运行 SQL Server 2016 的数据库无法使用 SQLNCLI10 或 SQLNCLI11。据我了解,只要我们不打算使用 SQL Server 中的任何功能,我们就可以对 native 客户端进行更新2016 年,但这似乎更像是一种权宜之计,而不是真正的解决方案。但是,当我尝试使用 DBParm 中的 FileDNS 条目将 native 客户端的 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+";'"
关于sql-server - 如何在 PowerBuilder Classic 12.5.2 中连接到 SQL Server 2016?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41940898/