如何使用SqlCommand删除数据库中的所有表?

时间:2010-04-08 10:35:15

标签: database sql-server-2005 sqlcommand

与关于“删除所有表”任务的其他帖子不同,此问题具体是关于使用SqlCommand访问数据库。

同事面临的问题是,无论如何尝试,他都无法通过SqlCommand从数据库中删除所有表。他声称,只要存在活动连接 - 即SqlCommand本身的连接,他就无法执行此类操作。

我相信这应该是可行和简单的,但我对数据库没有太多线索所以我来这里问。如果您能在C#(或任何.NET语言)中提供一个简短的代码示例,那将是非常棒的。

如果您需要其他信息,请发表评论。

2 个答案:

答案 0 :(得分:1)

如果要在不删除数据库的情况下删除表,也可以使用以下命令:

exec sp_MSforeachtable 'DROP TABLE ?'

请注意,您必须先禁用/删除所有外键约束,否则很可能会失败。

答案 1 :(得分:0)

您需要发出DROP DATABASE命令 - 连接到相关服务器上的“master”数据库,然后发出

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);   
        }
    }
}

或者你需要迭代所有表 - 没有一个命令可以一次删除所有表。此外,在删除表时,您可能需要先删除约束和索引。

放弃一切并不是一件容易的事!