我正在考虑使用 C# SMO 库以编程方式创建当前数据库结构(不含数据)的副本。我已经成功地移动了模式、表、存储过程和外部资源,但是我很难这样做。我正在考虑使用这样提供的表对象:
TableCollection tables = server.Databases[source].Tables;
foreach (Table table in tables)
{
if (table.IsExternal)
{
Table newTable = new Table(ddatabase, table.Name, table.Schema);
foreach (Column col in table.Columns)
{
Column newColumn = new Column(newTable, col.Name, col.DataType);
newTable.Columns.Add(newColumn);
}
//newTable.IsExternal = table.IsExternal;
newTable.Create();
}
}
如果我取消注释 isExternal 以将其设置为 true,它会抛出错误。将代码注释掉,它将创建表,但不会创建为外部表。
任何关于如何解决这个问题的想法/建议将不胜感激
最佳答案
我已经找到了解决方案,我只需要添加以下代码:
newTable.ExternalTableDistribution = table.ExternalTableDistribution;
newTable.DataSourceName = table.DataSourceName;
newTable.IsExternal = true;
关于C# SMO 创建外部表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50699351/