0

WindowsServer2008上のSQLServer2008では、以下のクエリがあり、実行時に古い「文字列またはバイナリデータが切り捨てられます」を取得します。

しかし、ここで本当に奇妙なことは、最後のフィールドの値(isOrganiser)を2から9の間に変更すると、正常に実行されることです。114841を114741に変更した場合も同じです(そしてそのパターンは続きます)。それで、問題は整数フィールドによって引き起こされていますか?またはビットフィールド?何?

だから私は困惑しています。いくつかの追加情報:

  1. 一部のint列にはインデックスがあります。すべてを無効にしましたが、同じ問題が発生します。
  2. このクエリは、この他のアプリケーションのいたるところに実行され、問題が発生したことはありません。ここで異なるのは、おそらくレコードの量だけです。
  3. IDはFKですが、SQLでは制約は適用されません。
  4. このテーブルにはID列(100001シードおよび+1増分)があります-実行エラーが発生するたびにレコードは挿入されませんが、挿入される次のレコードのIDは、前のエラーが挿入されたかのように増分されます

    INSERT INTO [emailRecipient] (
        [recordTitle], 
        [createdByID], 
        [canUpdate], 
        [canDelete], 
        [isDeleted], 
        [canRemove], 
        [drsQuickSummary],
        [drsSummary], 
        [isEditLocked], 
        [sourceRID], 
        [insertIndex], 
        [isSaved], 
        [allowNextInsertTrigger],
        [allowNextUpdateTrigger], 
        [allowNextDeleteTrigger], 
        [emailRID], 
        [personID], 
        [organisationID],
        [emailAddressID], 
        [emailAddress], 
        [isOrganiser]
    )
    
    VALUES (
        '', 
        100002, 
        1, 
        1, 
        0, 
        0, 
        '', 
        '',
        0,
        '', 
        1, 
        1, 
        1, 
        0, 
        0, 
        100753, 
        102969, 
        114841, 
        102434, 
        'me@myplace.com', 
        0
    );
    
4

1 に答える 1

1

トリガーの 1 つで切り捨てが発生していると思われます。

ああ、そして5つのトリガー?ここで発生する可能性のある最適化があると思います。:-)

于 2013-03-19T12:56:32.200 に答える