2012-12-18 6 views
12

優れている私は、以前、このChanging data type of column in SQL Serverドロップ/インデックスを無効にすると、SQLサーバーに

にフォローアップ私の質問を書いています、私はすべてのインデックスと制約を削除する必要があり、それは私がそれらを削除する必要があります答えた場合でした。

私はインターネットでサーフィンをしていたので、いくつかの記事を見て、インデックスを無効にして有効にして、削除して再作成するほうがいいと言いました。

これはどのようなやり方ですか?インデックスを無効にすると、列のデータ型も変更できますか?両方の違いは何ですか?ドロップとインデックス作成

DROP INDEX UX_1_COMPUTATION ON dbo.Computation 

ALTER TABLE dbo.Computation 
ALTER COLUMN ComputationID NVARCHAR(25) not null 

CREATE UNIQUE INDEX UX_1_COMPUTATION ON dbo.Computation (ComputationID); 

声明インデックスの無効化と有効化とと

声明

ALTER INDEX [UX_1_COMPUTATION ] ON dbo.Computation DISABLE 

ALTER TABLE dbo.Computation 
ALTER COLUMN ComputationID NVARCHAR(25) not null 

ALTER INDEX [UX_1_COMPUTATION ] ON dbo.Computation REBUILD; 
+4

テストスクリプトを実行しましたか?また、インデックスで使用される[列の変更の制限事項](http://msdn.microsoft.com/en-us/library/ms190273.aspx)と、インデックスの無効化](http://msdn.microsoft.com/en-us/library/ms177406(v = sql.100).aspx)を参照してください。うまくいけば、何かを無効にすることとそれを落とす(削除する)ことには違いがあることは明らかです。 – Pondlife

+0

@Pondlife情報をありがとう – Sam

答えて

5

指数あなたにも、列のデータ型を変更することが可能で無効にしていますか?

これは、選択したインデックスタイプに基づいています。表のクラスタード索引が使用不可になっている場合は、列データ型を変更できません。インデックスがクラスタ化されていないインデックスであれば、それを行うことができます。

両者の違いは何ですか?

インデックスの無効化と削除の最大の違いは、メタデータと統計情報が保持されているかどうかです。無効にすると、それらは無効になります。ドロップされた場合、それらはドロップされません。いずれかのアクションを実行する前に、オプションを慎重に検討し、いつでもインデックスを再作成する方法があることを確認してください。

これはもっと良い方法ですか?

私は、インデックスを削除して再作成することをお勧めします。

関連する問題