2017-01-30 16 views
2

私は、SQL Serverネイティブクライアント(SQLNCLI10)を使用してハードコードされた接続文字列を持つPB Classicで書かれたレガシーアプリケーションをサポートしています。ただし、Native ClientはSQL Server 2012以外ではサポートされていません.2014年に動作しますが、supportedではありません。 SQLNCLI10またはSQLNCLI11を使用できないSQL Server 2016を実行しているいくつかのデータベースがあります。私が理解している限り、SQL Serverの機能を使用しない限り、ネイティブクライアントへの更新を展開できますそれは実際の解決策よりもストップ・ギャップ・メジャーのように思えます。ただし、DBParmのFileDNSエントリを使用して新しいODBCドライバを使用するようにネイティブクライアントからDBMSを変更しようとすると、クライアントは常にDSNファイルの場所とその他の接続プロパティを要求します。PowerBuilder Classic 12.5.2でSQL Server 2016に接続するにはどうすればよいですか?

PowerBuilder Classicでは、SQL Server 2016(SQL Server 2016ドライバの場合はODBC 13を使用することが望ましい)に接続する最良の方法は何ですか?

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;データベース=" + ls_con_database + ";サーバー=" + 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

Nope。問題は、Web上の "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 + ";'" 

私は少しさらに行ってみましたこれは私たちが現在(詳細をスクラブした後に)使用しているものです文字列のTrusted_Connection部分を置き換えるDBParmにUID =とPWD =を追加してSQL認証を行います。また、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+";'" 
+0

最初の例でも 'Database'パラメータを使用したとしますか? –

+0

また、TrustServerCertificate = Yesは、2番目の例のDBParmの一部です。Trusted_Connection parmを意味すると見なします。 –

+0

技術的には、テストしていたときにデフォルトのデータベースを使用しただけなので、Databaseパラメータは不要でしたが、まだ示唆しています。私は、TrustServerConnectionとTrusted_Connectionで自分の答えを編集します – Elsimer

関連する問題