通过C#和SMO检查和删除现有表

时间:2009-05-29 21:58:56

标签: c# smo

我正在尝试按名称查找SQL表,如果存在则删除它。这一切都需要使用SMO在C#中完成。

为了使其复杂化,该表还具有除“dbo”之外的模式。

最终表格将通过SMO重新创建(我有这个工作)但我必须确保它不存在,然后才能重新创建它。

我看到的所有示例似乎都在创建,然后将表全部放在同一个上下文中。在我的情况下,表格将在之前的会话中创建并填充。

4 个答案:

答案 0 :(得分:8)

var connection = new SqlConnection(connectionString);
var server = new Server(new ServerConnection(connection));

db = server.Databases["YourFavDB"];

db.Tables["YourHatedTable"].Drop();

答案 1 :(得分:3)

我认为最好的方法是:

Microsoft.SqlServer.Management.Smo.Database myDataBase = myServer.Databases["myDataBaseName"];
bool tableExists= myDataBase.Tables.Contains("myTable");
if (tableExists)
{
   myDataBase.Tables["myTable"].Drop();
}

答案 2 :(得分:1)

难道你不能将DROP TABLE语句包装在try / catch块中,并丢弃发生的任何错误吗?

无论如何,用于确定表是否存在的sql是:

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TableName]') AND type in (N'U'))

答案 3 :(得分:0)

第一个问题是,为什么不能使用DDL删除和重新创建?

回答你的问题:

Table table = new Table(myDatabase, "MyTable", "MySchema");