9

列のデータ型をsmallintからbigintに変更する必要があります(設計上の考慮事項が不十分です。質問しないでください)。TSQLを実行します

alter table dbo.Test alter column ProductionModeID bigint NULL

しかし、メッセージを受け取ります:

メッセージ5074、レベル16、状態1、行1オブジェクト「DF_Test_ProductionModeID」は列「ProductionModeID」に依存しています。

メッセージ4922、レベル16、状態9、行1 ALTER TABLE ALTER COLUMN ProductionModeIDは、1つ以上のオブジェクトがこの列にアクセスするために失敗しました。

DF_Test_ProductionModeIDdbo.Test>>Constraintsで見つけました。(私はどのようDF_Test_ProductionModeIDに作成されたかわかりませんし、それが存在する必要があるとは思いません)。[削除]を押して[OK]ボタンを選択すると、次のメッセージが表示されます。

===================================

デフォルトの「DF_Test_ProductionModeID」はサーバーに存在しません。(SqlManagerUI)


ヘルプが必要な場合は、次をクリックしてください:http: //go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1447.4+ ((KJ_RTM).100213-0103+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates .ObjectDoesNotExist&LinkId = 20476


プログラムの場所:

Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DoDropObject(Int32 objectRowIndex)at Microsoft.SqlServer.Management.SqlManagerUI.DropObjects.DropAllObjects(Boolean stopOnError)

それで私は今混乱しています、なぜならそれが存在しない場合、それはどのように列に依存することができるのでしょうか?

4

1 に答える 1

13

次を実行するとどうなりますか?

ALTER table Test drop DF_Test_ProductionModeID

詳細については、「デフォルトの制約に名前を付ける方法」および「SQLServerで名前なしでデフォルトの制約を削除する方法」も参照してください。

于 2013-03-07T00:40:18.347 に答える