我正在尝试使用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;
}
创建副本但忽略分区方案,有没有办法与分区方案对齐?我是以错误的方式做事吗?我没有收到任何错误消息或异常,代码默默地创建分区表的未分区副本。
我想自动化,因为我有几百个表,其中分区与错误的模式对齐。
答案 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")