我正在考虑使用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# - C#SMO创建外部表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50699351/

10-09 21:42