1

良い一日、

SQL Server DBテーブルに Time(DateTime) フィールドがあり、VS 2010 プログラムで DateTime タイプのレコードを DB にコミットする必要ありますすると、次のエラーが表示されます。

{"列の挿入または更新が、以前の CREATE RULE ステートメントによって適用されたルールと競合しています。ステートメントは終了しました。データベース 'PTBODW'、テーブル ' dbo.MatchGPStoTripSchedule '、列 ' tTripScheduledStartTime ' で競合が発生しました。\r\nステートメントは終了しました。"} 誰か助けてください。

前もって感謝します。

4

2 に答える 2

0

列が古いsp_bindrule機能を使用しているようです。次のコマンドを使用して、データベース内のルールを一覧表示できます。

select  o.name as TableName
,       c.name as ColumnName
,       r.name as RuleName
from    sys.objects o
join    sys.columns c
on      c.object_id = o.object_id
join    sys.objects r
on      r.object_id = c.rule_object_id
where   o.is_ms_shipped <> 1
        and rule_object_id <> 0

次の方法でルールの定義を表示できますsp_helptext

exec sp_helptext 'RuleName'

ルールは列からアンバインドできますsp_unbindrule(列ごとに 1 つのルールしか存在できないためsp_unbindrule、ルールの名前を知る必要はありません)。

exec sp_unbindrule 'MatchGPStoTripSchedule.tTripScheduledStartTime'
于 2012-08-06T08:18:45.650 に答える
0

範囲外の変数のように聞こえます。SQL Management Studio で SQL プロファイラーを起動し、エラーの原因となっている正確な SQL を見つけます。一括挿入の場合、問題の原因となっている (最初の?) 行を分離するまで、挿入のサイズを連続的に取得します。

于 2012-08-06T08:12:56.247 に答える