与其他关于“删除所有表”任务的帖子不同,这个问题专门关于使用SqlCommand
来访问数据库。
一位同事面临的问题是,无论如何尝试,他都无法通过 SqlCommand 从数据库中删除所有表。他表示,只要存在活动连接(SqlCommand 本身的连接),他就无法执行此类操作。
我相信这应该是可能且容易的,但是我对数据库没有太多了解,所以我来这里询问。如果您可以用 C#(或任何 .NET 语言,就此而言)提供一个简短的代码示例,那就太棒了。
如果您需要更多信息,请发表评论。
与其他关于“删除所有表”任务的帖子不同,这个问题专门关于使用SqlCommand
来访问数据库。
一位同事面临的问题是,无论如何尝试,他都无法通过 SqlCommand 从数据库中删除所有表。他表示,只要存在活动连接(SqlCommand 本身的连接),他就无法执行此类操作。
我相信这应该是可能且容易的,但是我对数据库没有太多了解,所以我来这里询问。如果您可以用 C#(或任何 .NET 语言,就此而言)提供一个简短的代码示例,那就太棒了。
如果您需要更多信息,请发表评论。
如果要删除表而不删除数据库,还可以使用以下命令:
exec sp_MSforeachtable 'DROP TABLE ?'
请注意,您必须先禁用/删除所有外键约束,否则很可能会失败。
您要么需要发出 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);
}
}
}
或者,您需要遍历所有表 - 没有一个命令可以一次删除所有表。此外,在删除表时,您可能需要先删除约束和索引。
放弃一切并不是一件容易的事!