我们有一直在生产在过去6年,已针对SQL MSDE和MS-SQL服务器做工精细一个PowerBuilder的客户端应用程序(PB 12.5)2012年身份的价值不被SQL Server返回2014
最近,我们已经升级了一些安装(大约40个)到SQL Server 2014.在这些安装的大约一半中,我们看到一个问题,在更新方法被调用后,Identity列被而不是返回到DataWindow。这是有问题的代码:
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
数据窗口具有标识列和主键正确的设置。
这是不会发生的所有设备,但只有一些。所有的安装都非常相似。 PB应用程序安装在服务器上,并从瘦客户端启动。
连接字符串如下:
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='ServerName',PROVIDERSTRING='Database=DBName',Identity='SCOPE_IDENTITY()'"
我们试图对几种测试安装和SQL Server 2014 Express还,但它工作正常。只有在某些安装中,这会失败,我们不知道为什么。我们尝试更改为Identity='@@IDENTITY'
,但没有效果。
有没有人有任何想法?
试试吧,如果有帮助:[OLE DB] DBParm =“PROVIDER = 'SQLNCLI11',DATASOURCE = '服务器',PROVIDERSTRING = '数据库= DBNAME; APP = APPNAME',OJSyntax = 'ANSI',PBTrimCharColumns ='Yes',DateTimeFormat ='\''yyyy-mm-dd hh:mm:ss.fff \''',DateFormat ='\''yyyy-mm-dd \''',TimeFormat ='\'' hh:mm:ss \',Identity ='SCOPE_IDENTITY()',DisableBind = 0“ –
我会试试这个并恢复。 – navigator
不幸的是,它并没有帮助:( – navigator