2016-11-14 8 views
1

過去6年間に実稼働されており、SQL MSDEおよびMS-SQL Server 2012に対して正常に機能しているPowerBuilderクライアントアプリケーション(PB 12.5)があります。ID値がSQL Serverによって返されない2014

最近、いくつかのインストール(約40件)をSQL Server 2014にアップグレードしました。これらのインストールの約半分で、更新メソッドが呼び出された後、ID列がではなくがデータウィンドウに返されるという問題がありました。

If lds_Update.Update() < 1 then 
    lb_Error = True 
    ls_Temp = "The inspection header could not be created." 
Else 
    ll_InspID = lds_Update.GetItemNumber(1, "Insp_ID") 
    If (ll_InspID <= 0) or Isnull(ll_InspID) then 
     lb_Error = True // This is being hit as ll_InspID is null 
     ls_Temp = "Could not retrieve the inspection identity." 
    End If 
End If 

データウィンドウには、ID列と主キーの正しい設定があります。

enter image description here

これは、すべてのインストールで起こっだけいくつかされていません。すべてのインストールはほぼ同じです。 PBアプリケーションはサーバにインストールされ、シンクライアントから起動されます。次のように

接続文字列は次のとおりです。

SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='ServerName',PROVIDERSTRING='Database=DBName',Identity='SCOPE_IDENTITY()'" 

我々はまた、いくつかのテストインストールおよびSQL Server 2014のExpressのに対して試してみましたが、それは正常に動作します。これが失敗するのはいくつかのインストールでのみで、理由はわかりません。 Identity='@@IDENTITY'に変更しようとしましたが、効果はありません。

誰にもアイデアはありますか?

+0

それは場合に役立ちます、それを試してみてください:[OLE DB] のDBParm = "PROVIDER = 'SQLNCLI11'、DATASOURCE = 'サーバ'、ProviderString機能= 'データベース= DBNAME; APP = APPNAME'、OJSyntax = 'ANSI'、PBTrimCharColumns = 'はい'、DateTimeFormat = '\' 'yyyy-mm-dd hh:mm:ss.fff \' '、DateFormat =' \ '' yyyy-mm-dd \ '' '、TimeFormat =' \ '' hh:mm:ss \ '、Identity =' SCOPE_IDENTITY() '、DisableBind = 0 " –

+0

これを試して元に戻します。 – navigator

+0

残念ながら、それは助けになりませんでした:( – navigator

答えて

1

pbodbxxx.iniファイル(ここでxxxは使用しているPBのバージョンです.の場合はPB12の場合120)を使用してID値を取得するためのクエリを変更できます。ファイルの命名規則にもかかわらず、Sybaseは を選択して、 ファイル内のいくつかの設定に応答してOLE DB接続を行います。この特定のケースでは、あなたの場合は

'SCOPE_IDENTITYを()SELECT' GetIdentity = 'アイデンティティを@@選択'

にGetIdentity = から [MS_SQLSERVER_SYNTAX]セクション

に次の行を変更このパスを選択すると、 アプリケーションでINIファイルを配布する必要があります。これはPB11で動作することに注意してください - 私はそれがまだ PB12について真であると仮定します。

興味深い記事: https://blogs.sap.com/2012/10/25/using-autoincrementing-columns-from-a-powerbuilder-datawindow/

+0

iniファイルは接続文字列の設定をオーバーライドしていますか? – navigator

+0

問題は解決されました.pbodb120.iniファイルが完全に失われていました。多くの感謝! – navigator

0

私はSQLのネイティブドライバを使用しています。これは、私のトランザクションオブジェクトのDBparmsセクションの一部です:

"Provider='SQLNCLI10', Identity='SCOPE_IDENTITY()' 

これは私のために働いています。

+0

SQLNC、OLEDB、ODBCを試してみました。みんな同じ問題を抱えている。 – navigator

+0

これはサーバー上の設定上の問題のようですが、何を決定することはできません。 – navigator

関連する問題