我支持使用SQL Server Native Client(SQLNCLI10)在PB Classic中编写的遗留应用程序,该应用程序具有硬编码连接字符串。但是,SQL Server 2012之外不支持Native Client。它在2014年有效,但它不是supported。我们有几个现在正在运行SQL Server 2016但不能使用SQLNCLI10或SQLNCLI11的数据库。根据我的理解,只要我们不打算使用任何功能,我们就可以对本机客户端进行更新。 SQL Server 2016,但这似乎更像是一个临时措施,而不是真正的解决方案。但是,当我尝试从本机客户端更改DBMS以使用DBParm中的FileDNS条目使用新的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) + "' "
答案 0 :(得分:2)
经过一些试验和错误后,我能够使用以下内容进行连接:
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 + ";'"
我进一步尝试使用SQL身份验证,将UID =和PWD =添加到DBParm中,替换字符串的Trusted_Connection部分。我还添加了Database参数(初始字符串只是连接到默认的master数据库)。 像这样:
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+";'"