0

我正在尝试使用 SMO 复制分区表的副本​​:

using (var scope = new TransactionScope()) 
{ 
    var copiedtable = CreateTable(sourcetable);

    createColumns(sourcetable, copiedtable);
    CreateIndexes(sourcetable, copiedtable);
    CreateForeignKeys(sourcetable, copiedtable);

    sourcetable.PartitionScheme = sourcetable.PartitionScheme + "1";

    scope.Complete();
    return copiedtable; 
 } 

创建了副本但忽略了分区方案,有没有办法与分区方案对齐?我做事的方式不对吗?我没有收到错误消息或异常代码以静默方式创建分区表的未分区副本。

我想自动化,因为我有数百个表,其中分区与错误的模式对齐。

4

1 回答 1

0

我找到了一种解决方法,方法是将定义编写到 StringBuilder 中,然后进行查找和替换。

        var scriptOptions = new ScriptingOptions
                                {
                                    ClusteredIndexes = true,
                                    Default = true,
                                    FullTextIndexes=true,
                                    Indexes=true,
                                    NonClusteredIndexes = true,
                                    SchemaQualify = true,
                                    DriAllConstraints = true
                                };

        var tableScripts = table.Script(scriptOptions);
        String indexName = null;

        // Adjust to new table name
        sb.Replace(tableName, tableNameNew);

        //
        sb.Replace(partitionName, partitionName + "_New")
于 2012-11-08T15:40:22.577 回答