1

「すべてのテーブルを削除する」タスクに関する他の投稿とは異なり、この質問は特にSqlCommandデータベースへのアクセスに使用することに関するものです。

同僚は、どのように試みても、SqlCommandを介してデータベースからすべてのテーブルを削除できないという問題に直面しています。彼は、アクティブな接続(SqlCommand自体による接続)がある限り、そのようなアクションを実行できないと述べています。

これは可能で簡単なはずだと思いますが、データベースについての手がかりがあまりないので、ここに来て質問しました。C#(または、さらに言えば、任意の.NET言語)で短いコード例を提供できれば素晴らしいと思います。

追加情報が必要な場合は、コメントを残してください。

4

2 に答える 2

1

データベースを削除せずにテーブルを削除する場合は、次のコマンドを使用することもできます。

exec sp_MSforeachtable 'DROP TABLE ?'

最初にすべての外部キー制約を無効化/削除する必要があることに注意してください。そうしないと、失敗する可能性が高くなります。

于 2010-04-08T13:26:47.620 に答える
0

DROP DATABASEコマンドを発行する必要があります-問題のサーバー上の「マスター」データベースに接続してから、

DROP DATABASE (your database)

指図。

何かのようなもの:

using (SqlConnection con = new SqlConnection("server=yourserver;database=master;integrated security=SSPI"))
{
    using (SqlCommand cmd = new SqlCommand("DROP DATABASE (your database)", con))
    {
        try
        {
            con.Open();
            int returnValue = cmd.ExecuteNonQuery();
            con.Close();
        }
        catch (Exception exc)
        {
            string errorMsg = string.Format("{0}: {1}", exc.GetType().FullName, exc.Message);   
        }
    }
}

または、すべてのテーブルを反復処理する必要があります。すべてのテーブルを一度に削除する単一のコマンドはありません。また、テーブルを削除するときは、最初に制約とインデックスを削除する必要がある場合があります。

すべてを削除するのは簡単な作業ではありません。

于 2010-04-08T10:54:58.107 に答える