0

SQL データベースを使用して標準の ASP.Net サイトを設計しています。データベーススキーマがあり、テスト中に他のタスクの中でデータ型を変更していますが、内部に含まれるデータはそれほど重要ではありません。

古いデータが新しいルールと一致しないため、エラーが発生し続けます。これは重要ではなく、すべてをクリアしても問題ありませんが、現在、データベースを .sql ファイルにエクスポート/公開してから、最初からインポートする必要があります。これには時間がかかります。

自動番号/ID を 1 にリセットしてすべてのコンテンツを削除したり、現在行っている作業をスピードアップしたりできる、私が見逃したクイック ボタン/機能はありますか?

4

6 に答える 6

3

あなたが取ることができるいくつかのオプションがあります、「最速」は本当にあなたのデータベースに依存します。

シードなどに関する質問に最初に答えるには-TRUNCATETABLEは、テーブル内のすべての情報を削除し(ログに記録されないため、非常に高速です)、ID列をリセットします。

例えば:

TRUNCATE TABLE dbo.table

http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx

ここでの重要な制限は、別のテーブルによって参照されているテーブルでは使用できないことです。この場合、標準の削除を使用してから、DBCCCHECKIDENTを使用できます。

例えば:

DELETE FROM dbo.table
GO
DBCC CHECKIDENT(dbo.table, reseed, 0)

http://msdn.microsoft.com/en-us/library/ms176057.aspx

情報を正しい順序で削除することを確認するために、削除を忘れないでください(つまり、外部キーを考慮に入れます)。

私がよく使用するもう1つのアプローチは、データベースをリセットするときに、完全なティアダウン/再構築スクリプトを作成することです。基本的な前提は、スクリプトの先頭ですべてのデータベースオブジェクトを破棄または削除してから、それらを再作成することです。これは必ずしもすべてのシナリオの解決策ではありませんが、基本的なタスクではうまく機能します。エラーを回避するために、私は通常、ドロップステートメントをIFステートメントに追加します。例:

IF EXISTS 
(
     SELECT * 
     FROM information_schema.tables 
     WHERE table_name = 'table' AND table_schema = 'dbo'
)
BEGIN
    DROP TABLE dbo.table
END
于 2009-11-30T12:04:16.720 に答える
1

テーブル内のすべてのデータを削除する簡単な方法は次のとおりです。

TRUNCATE TABLE YourTableName

すべてのテーブルを切り捨てるスクリプトを作成できます。

別の方法は、テーブルをドロップして再作成することです。

本当にすべてのデータを削除したい場合は、データベースを切り離して新しいデータベースを作成できます。少し極端ですが、最初にすべてを削除するよりも高速である可能性があります。

于 2009-11-30T12:04:02.347 に答える
1

すべてのテーブルを削除(または切り捨て、さらに高速化)するためのT-SQLコードを作成してみませんか?テーブルをクリアするときは、整合性ルールを考慮するように注意してください。主キーを含むテーブルをクリーンアップする前に、常に外部キーを含むテーブルをクリーニングしてください。

于 2009-11-30T12:04:39.600 に答える
1

データをクリアする必要がある場合は、各テーブルのすべてのデータを切り捨てるスクリプトを作成するだけです。truncateコマンドは、IDENTITYフィールドもリセットします。

TRUNCATE TABLE myTable

あなたが持っているテーブルごとに。次に、そのスクリプトを毎回実行します。

于 2009-11-30T12:08:48.030 に答える
0

他の人が示唆しているように、データベースを最初から構築し、再構築する前にデータベースを破棄できるスクリプトを維持することが望ましいと思います。アプリケーションの他の部分を開発するのと同じように、このスクリプトを開発します。特に複雑な関係やトリガーなどがある場合は、GUIを使用してデータベースを構築するよりも、スクリプトを使用してデータベースを理解する方が簡単だと思います。

また、他の開発者がいて、作業中のデータベースをコピーして別の開発者に渡すよりも速く、エラーが発生しにくい場合にも役立ちます。

リリース時に、そのスクリプトをフリーズしてから、最初のスキーマから新しいスキーマへの変更のみを含む次のリリースのデルタスクリプトを作成できます。これにより、デルタで作成された新しいオブジェクトを再作成する前に破棄して、データベース全体をワイプすることなく簡単に再実行できるようにすることもできます。

于 2009-11-30T13:27:53.033 に答える