3

アーキテクチャを破壊したり、制約を削除/読み取りしたりせずに、データベース内のすべてのデータをワイプする(すべてのテーブルからすべての行を削除する)エレガントな方法はありますか?

各テーブルからデータを削除することもできますが、これは面倒なようです。ストアドプロシージャを利用するSQL実装の完全なソリューションをたくさん見てきましたが、明らかにその機能は利用できません。この機能を製品のエンドユーザーが利用できるようにしない可能性がありますが、社内テストの目的で有効になっている可能性があります。私が言ったように、私はこれを手動で行うことができるので、これを好奇心に任せてください

4

5 に答える 5

1

Manish Mishraからのすばらしいコミュニティ ヘルプのおかげで、最善の解決策は、データベース ファイルを削除し、スキーマを使用してデータベースを再構築することです。{このブログ]( http://erikej.blogspot.co.uk/ ) で、 ExportSqlCeという SQL Server Management Studio のアドインを見つけました。この機能が必要な場合は、Microsoft SQL Sever Management Studio 2008が SQL CE 3.5 データベースに接続できるようにする必要があります。

データベースに接続したら、次の手順に従って、このアドオンを使用してデータベース スキーマを作成できます。

于 2013-03-06T11:21:23.933 に答える
1

いいえ。すべての関係を含め、db 構造をそのまま残したいためです。したがって、最初にすべてのマスター データを削除してから、スレーブ データを削除します。

スクリプトには、切り捨てクエリを特定の順序で含める必要があります。

それ以外の場合は、db スキーマ全体を生成して自由に使用できます。データベースを空にする必要があるときはいつでも、データベースを削除して再作成してください:)

SQL-CE db のスキーマを生成する方法について..SQLCE-ToolBoxを使用する

また、SQLCE db での操作の詳細については、このブログと世界中のほとんどの sqlce ユーザーが気に入りました :)

于 2013-03-06T10:05:10.130 に答える
0

私はこれについて考えます:あなたの質問を理解していない場合は修正してください:各テーブルを繰り返してからテーブルを空にする必要があります。

http://how-to-code-net.blogspot.ro/2012/07/how-to-delete-all-tables-from-database.html からヘルプが得られる場合があります。

DECLARE @TableName varchar(500)
DECLARE cur CURSOR
      FOR SELECT [name] FROM sys.tables WHERE type in ('u') 

      OPEN cur

      FETCH NEXT FROM cur INTO @TableName
      WHILE @@fetch_status = 0
      BEGIN
            EXEC('truncate TABLE ' + @TableName)
            --select @TableName
            FETCH NEXT FROM cur INTO @TableName
      END
      CLOSE cur
      DEALLOCATE cur 

これはあなたが必要とするものですか?

于 2013-03-06T10:04:14.663 に答える
0

エンド ユーザーがいる場合は、代わりにエクスポート オプションを使用できます (SQL Server の Express エディションでは、テーブル内のデータは自動的に回避されます)。

したがって、エクスポート オプションを使用すると、すべてのものを含むがテーブル内のデータを含まないデータベースのレプリカを簡単に作成できます。

于 2013-03-06T10:02:08.103 に答える