使用SMO创建分区表的副本

时间:2012-10-03 08:49:09

标签: c# sql sql-server smo

我正在尝试使用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; 
 } 

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

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

1 个答案:

答案 0 :(得分: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")