【发布时间】:2013-02-19 18:25:15
【问题描述】:
我正在使用 SMO 在 Sqlserver 2008 中动态创建表。现在我想使用 SMO 为现有表添加新列,但我正在尝试执行代码,最终获得运行时异常为 " alter fail to table"。我的代码 sn-p as
public static bool Altertable(DynamicTable dynamicTable)
{
if (myDatabase.Tables.Contains(dynamicTable.Name))
{
Table myalterEmpTable = myDatabase.Tables[dynamicTable.Name];
var collist = new List<Column>();
foreach (var item in dynamicTable.Columns)
{
Column col = myalterEmpTable.Columns[item.Name];
if (col == null)
{
Column cols = new Column(myalterEmpTable, item.Name , DataType.UserDefinedDataType(item.Type));
cols.Nullable = item.IsNullable;
cols.Default = "";
collist.Add(cols);
}
}
/*Here I'm getting newly added columns only*/
foreach (var item in collist)
{
myalterEmpTable.Columns.Add(item);
}
try
{
myalterEmpTable.Alter();
}
catch (SmoException ex)
{
throw ex;
}
}
}
最后我遇到了异常,因为 “alter fail to table”。即使谷歌搜索也没有帮助..所以我的问题是,使用 C# 执行此操作的最佳方法是什么?
【问题讨论】:
-
完整的异常或可执行示例会有所帮助
-
您的数据类型可能有问题,请确保您拥有该数据类型或尝试使用其他内置数据类型。
标签: c# sql-server-2008 smo