zoukankan      html  css  js  c++  java
  • 可恶的MSSQL 内部 SQL Server 错误。(臭BUG)

    服务器: 消息 8624,级别 16,状态 1,行 442
    内部 SQL Server 错误。

    郁闷了两天的问题终于得到了解决。记下来

    前天突然客户反应[客户订单],用的好好的居然有"内部错误",跟踪有发现是MSSQL的错误。代码如下:

    SET NOCOUNT ON

    DECLARE
    @mm_Key uniqueidentifier

    SELECT
    @mm_Key='{50A5A02D-0CA7-4864-958A-63205D29E42A}'

    DECLARE @DanJuKey uniqueidentifier

    SELECT @DanJuKey = @mm_Key

    DELETE f_pzjl_d
      FROM mak_GongChengPZJL f_pzjl
      INNER JOIN mak_GongChengPZJL_D f_pzjl_d ON f_pzjl_d.FFormKey = f_pzjl.FFormKey
      INNER JOIN mak_WuLiaoGCPZ f_pz_m ON f_pz_m.FFormKey = f_pzjl.FGongCPZKey
      LEFT JOIN sal_CustOrder_D od_d ON f_pzjl.FFormKey = od_d.FGongChengPZKey
      WHERE f_pzjl.FOwnsFormKey = @DanJuKey  --<1>
            AND (od_d.FKey IS NULL
                OR od_d.FWuLiaoKey <> f_pz_m.FWuLiaoKey) 

     

    试了下发现用<1>的@DanJuKey替换常量或者用@mm_Key就可以,我用@mm_Key替换了@DanJuKey暂时解决了问题。郁闷。

     

    今天客户有反应[采购订单]也有相同的问题,我想这次不能这么忽悠过去了,于是认真查了查。网上也找了很久。找不到,突然我看代码的时候发现

    DELETE f_pzjl_d
      FROM mak_GongChengPZJL f_pzjl
      INNER JOIN mak_GongChengPZJL_D f_pzjl_d ON f_pzjl_d.FFormKey = f_pzjl.FFormKey
      INNER JOIN mak_GongChengPZJL_D_SL f_pzjl_d_sl ON f_pzjl_d_sl.FKey = f_pzjl_d.FKey  --这一段多
      INNER JOIN mak_WuLiaoGCPZ f_pz_m ON f_pz_m.FFormKey = f_pzjl.FGongCPZKey
      LEFT JOIN sal_CustOrder_D od_d ON f_pzjl.FFormKey = od_d.FGongChengPZKey
      WHERE f_pzjl.FOwnsFormKey = @mm_Key
            AND (od_d.FKey IS NULL
                OR od_d.FWuLiaoKey <> f_pz_m.FWuLiaoKey)

    结论:

      发现只是那一段多而已。于是查了查,发现mak_GongChengPZJL_D和mak_GongChengPZJL_D_SL的主键有级联的关系。一去掉就可以了,总算是找到了问题...可以安心了

  • 相关阅读:
    制作USB系统盘
    01Mysql 配置方法
    Tec_010_怎样看K线图
    回顾5年内的央行加息历史
    推荐:微软下一代操作系统Windows 7版本详解
    关于USB启动盘制作
    Delphi Program test
    圣诞节 玩具
    敏捷宣言
    [转 TDD] 如何坚持TDD:使用者出现的问题以及解决方案
  • 原文地址:https://www.cnblogs.com/DKSoft/p/1584116.html
Copyright © 2011-2022 走看看