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

标签 sql-server powerbuilder

我支持用 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/

相关文章:

powerbuilder - 如何将 Excel 文件导入 DataWindow

来自 PowerBuilder(10 或 11.5)的 .NET dll

Powerbuilder:弹出窗口的定位

sql - 有什么更好的选择-SELECT TOP(1)或INNER JOIN?

c# - 如何在 asp.net mvc 身份验证中创建和验证用户?

c# - SQL Server 标识列在没有插入的情况下递增

sql-server - 如何在 dacpac 中打包部署贡献者?

c# - 将字符串列表附加到组合框

vbscript - 如何在 Powerdesigner 中使用 VBScript?

visual-studio - PowerBuilder 12 与 Visual Studio - 设计师支持