ベストアンサー
In SSMS :
データベースを右クリック
[タスク]に移動
[スクリプトの生成]をクリック
[オブジェクトの選択]セクションで、[データベース全体とすべてのデータベースオブジェクトのスクリプト]を選択します
[スクリプトオプションの設定]セクションで、[詳細設定]ボタンをクリックします
「ScriptDROPand CREATE」で、「ScriptCREATE」を「ScriptDROP」に切り替えてOKを押します
次に、ファイル、クリップボード、または新しいクエリウィンドウに保存します。
スクリプトを実行します。
これで、データベースを含むすべてが削除されます。ドロップしたくないアイテムのコードを必ず削除してください。または、[オブジェクトの選択]セクションで、データベース全体のスクリプトを選択する代わりに、削除するアイテムを選択するだけです。
スクリプトの助けを借りて:
SET @Cursor = CURSOR FAST\_FORWARD FOR
SELECT DISTINCT sql = "ALTER TABLE [" + tc2.TABLE\_SCHEMA + "].[" + tc2.TABLE\_NAME + "] DROP [" + rc1.CONSTRAINT\_NAME + "];"
FROM INFORMATION\_SCHEMA.REFERENTIAL\_CONSTRAINTS rc1
LEFT JOIN INFORMATION\_SCHEMA.TABLE\_CONSTRAINTS tc2 ON tc2.CONSTRAINT\_NAME =rc1.CONSTRAINT\_NAME
OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql
WHILE (@@FETCH\_STATUS = 0)
BEGIN
Exec sp\_executesql @Sql
FETCH NEXT FROM @Cursor INTO @Sql
END
CLOSE @Cursor DEALLOCATE @Cursor
GO
EXEC sp\_MSforeachtable "DROP TABLE ?"
GO
https://stackoverflow.com/questions/8439650/how-to-drop-all-tables-in-a-sql-server-database/43128914
回答
これは、現在のIT市場とテクノロジを理解し、SQLServerやその他のさまざまなデータベーステクノロジを使用したことのある人からの意見に基づく回答です。以上10年:SQL Serverの将来は、クエリ言語としてのSQLの使用の将来に依存します。私たちが知っているリレーショナルデータベース管理システムは、過去20年間でそれほど変化していませんが、コンピューティングに関連する他のほぼすべての主題が変化しています。 SQLの成功は、その単純さにあり、抽象化のレベルが低い場合は、常にこのようなテクノロジーが必要になります。ただし、SQLとRDBMSが現在の形式では提供しないニーズがいくつかあります。メタデータを含むデータ型に関しては苦労しています。たとえば、この日付は誰かの誕生日を表していますか?このnvarchar(50)は電子メールアドレスを表しますか?これらの2つの値は、一方の項目が他方より大きくてはならない日付範囲を表していますか? SQL Serverはこれをトリガーで処理しますが、この種のトリガーを配置するには非常に時間のかかる作業が必要であるため、企業は作業をスキップし、代わりにソフトウェアレイヤーに依存してこの問題を解決します。これにより、プロジェクト全体で組織と一貫性が失われます。 レプリケーションベースのニーズを抽象化された方法で処理しません。 たとえば、2つの切断されたシステムがテーブルに新しいレコードを作成する必要がある場合、どの新しいIDENTITYキーを生成する必要がありますか?この問題は、複合キーやGUID、またはその他のいくつかの方法を使用して解決できますが、SQLの利用者はこれらの複雑さに悩まされる必要があります。 これらは抽象化された方法でバイテンポラル時間管理を処理しません。たとえば、2013年7月に真実であると私たちが考えたものを追跡する必要がある場合、また、2016年まで学習しなかった2013年に関する修正データを保存する必要があり、それを処理して参照整合性を維持するためのスキーマを作成することは非常に複雑です…この問題をより簡単に処理する方法についてはすでに提案がありますが、現在の考え方ではそれを解決しないでください。 データの「モデル」を組み込むのに適していません。物理スキーマは、「このブール値」のような単純なものを適切に記述できません。値は真または偽を表します。」または「この日付は今後数か月になる可能性が高いため、この別の日付が過去の年になるカレンダーコントロールを使用するため、mm / dd / yyyyのドロップダウンを使用します。」 。そのような機能を提供するために、これらのシステムの上に多数の「ビジネスインテリジェンス」または「レポート」ツールが構築されていますが、これらのほとんどは依然として独自仕様であり、優れたソリューションがまだすべての人に利用可能になっていないため、年々変化しています。独占的な方法で(非常に優れているため、競争を打ち負かし、独自の基準を設定します)。 受け入れられたデータの古さを処理しません。データを要求するときに、クラスター内のサーバー内の古いデータがそうである可能性があることを示す簡単な方法はありません。古いものは、より早く見つけることができれば許容されます。これはパフォーマンスの問題を引き起こし、「NoSQL」データベースがポップアップする主な理由の1つです。多くの「NoSQLテクノロジー」がこの問題のごく一部の解決策を提供しますが、単に解決されていない問題がたくさんあります。たとえば、分散システムは、主要なパフォーマンスの問題を引き起こすことなく、トランザクションベースの分離ではうまく機能しません。データの質問をするときに、何年のデータが許容できるかなど、私たちが伝えることができることがあります。このデータが何らかの理由で変更された場合に通知を受け取りたいですか?近い将来、要求しているデータを変更したいと思う可能性はありますか、それともこれは単に読み取り専用であり、将来の変更の意図はありませんか?他にも多くの問題がありますが、重要な点です。 SQL Serverの将来は、経済と新しいアイデアの可用性と実装によって推進されるということです… SQLが質問をする最も一般的な方法であり続ける最低5〜8年はあると確信しています。あなたのデータとあなたのデータを変更するように頼むこと-しかしそれは欠点を持っており、コンピューティングのこの領域は「新しい大きなこと」のために予定されています。ディスク速度の進歩、コストのディスクサイズ、コストのRAMサイズ、そしておそらく垂直方向ではなく水平方向にスケーリングすることで「クラウドコンピューティング」を使用するというアイデアのほとんどは、ソフトウェアアーキテクチャがまだ苦労しているデータの世界におけるすべての新しい変数です。追い付く。 SQL Serverの将来は、データをより効率的に処理する方法への段階的かつ持続可能な変更です。名前が変更され、クエリ言語としてのSQLから離れて、現代のソフトウェアアーキテクトが直面している問題をより適切に解決するより強力な言語へと転換する可能性があります。