2017-01-30 142 views
2

我正在使用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 12.5.2中连接到SQL Server 2016?

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

这是我的DBParm字符串。我有完全相同的问题:SQLCA.DBParm =“ODBC;驱动程序= SQL Server的ODBC驱动程序13; DATABASE =”+ ls_con_database +“; SERVER =”+ ls_con_server +“; Trusted_Connection = YES;”提供者是msodbcsql13 –

+0

@MattBalent我发现这篇文章,建议在ConnectString =后放置单引号,但我还没有机会测试它,文章是一个很好的10岁... http:// nntp- archive.sybase.com/nntp-archive/action/article/%[email protected]%3E – Elsimer

+0

不可以。问题是网络上“无DNS”连接字符串的所有信息是旧的,显然不适用于Sql Server 2016 –

回答

1

一些试验和错误之后,我能够使用连接以下:

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 + ";'" 

我去一点,并试图它通过在DBParm中添加UID =和PWD =来替代字符串的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+";'" 
+0

我假设你在第一个例子中使用了'Database'参数? –

+0

另外,TrustServerCertificate = Yes仍然是第二个示例中的DBParm的一部分 - 我假设您的意思是Trusted_Connection parm。 –

+0

从技术上讲,当我们测试它时,我们只是使用默认数据库,所以数据库参数不是必需的,但我仍然建议它。我将在TrustServerConnection和Trusted_Connection上编辑我的答案 – Elsimer