2013-05-21 14 views
5

SQLサーバー上で実行されるアプリケーションがたくさんあります。今日、私たちは多くのパーティションスキーム/機能を持っていました。作成する。FullTextカタログで作成された「システム」パーティションスキームは削除できません

パーティション方式と機能はそれぞれifts_comp_fragment_data_space_{hash}ifts_comp_fragment_partition_function_{hash}と呼ばれていました。

深く掘り下げていっても、システム項目(is_systemは1に設定されています(sys.partition_schemes)に設定されています)はわかりません。

いくつかの調査の結果、SQLサーバーはフルテキストカタログが大きくなりすぎるとパーティションを作成することに気付きました。そのようなものはsee hereです。問題は、すべてのカタログを削除しただけです。これらのカタログは、放棄されています。

私はDBを.bacpacファイルとしてエクスポートしようとしているので、私はそれらを削除する必要があることを除いて、あまり心配しないでしょう、そして、DBがパーティションスキーム/機能サポートされていません。

SQLサーバーにこれらのオブジェクトを強制的に破棄させる方法はありますか?

+0

私はあなたのタイトルを編集したではありません。 「[質問には「タイトル内に「タグ」を含める必要がありますか」(http://meta.stackexchange.com/questions/19190/)」を参照してください。コンセンサスは「いいえ、そうすべきではありません」です。 –

+0

良い点、ありがとう) –

答えて

5

is_systemフラグを1から0に変更し、他のパーティションスキームと同様に削除することができます。これを行うには:

まず、サーバー上の更新ができるよう

exec sp_configure 'allow updates', 1 
go 
reconfigure with override 
go 
  1. シャットダウンSQLサーバー
  2. 実行することにより、バックアップシングルユーザーモードで起動「C:\プログラムファイル\マイクロソフトのSQLをServer \ MSSQL11.MSSQLSERVER \ MSSQL \ Binn \ sqlservr.exe -m "を昇格されたprivでコンソールから削除します。
  3. SQL ServerのDAC http://technet.microsoft.com/en-us/library/ms178068(v=sql.105).aspx
  4. を使用してサーバにログインし、我々はsys.partition_schemesにsp_helptextをを表示した場合は、あなたがis_system列がsys.sysclsobjsの表に、ステータスフラグに基づいていることがわかります。 "sysconv(bit、o.status & 0x4)AS is_system"
  5. フラグを変更するには、ステータスの現在の値を調べ、4ビットをマーク解除する必要があります。私の値はので、私は今あなたができるだけで、あなたのコンソールウィンドウを閉じると、SQL ServerのWindowsサービスを開始することにより、シャットダウンシングルユーザーモードSQL Serverプロセスを0

    update sys.sysclsobjs set status = 0 where name = 
        'ifts_comp_fragment_data_space_033D368C' 
    

にそれを更新4でした。その後、通常どおりログインし、パーティション方式を削除します。

最後に、あなたのこれは、運用サーバーのダウンタイムを計画する必要があるかもしれませんバック0

に設定する「アップデートできるように」を設定します。

免責事項これはおそらく、マイクロソフトはあなたがダイビングの前にいくつかの非PRODサーバー上でテストすることがあり、これを行う方法をサポートしていました。

+1

ありがとう...これは間違いなく私を正しい方向に向けると、DB全体をゼロから再作成する必要はありません^ _^ –

+0

あなたはsys.sysclsobjs.statusが何であるか知っていますか?それは文書化されていますか? –

+0

そして、 'status&〜0x4'をビットフィールドの他のビットを壊さないように設定するほうがずっといいですか? –

関連する問題