2017-01-30 126 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