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 回答