如何使用带有 SQL 服务器的 SMO 生成脚本以删除列?

How to generate script to drop column using SMO with SQL Server?

我想使用 SMO 生成脚本来删除 table 的某些列。

在 os 个索引的情况下,我可以使用

生成删除脚本
ScriptingOptions drop = new ScriptingOptions
{
      ScriptDrops = true,
      IncludeIfNotExists = true
};                
                
Index sourceIndex = sourceTable.Indexes[originalName];
    
var script = sourceIndex.Script(drop);

如何生成删除列的脚本? SMO 的对象列没有方法 Script()。

任何帮助将不胜感激

我打算用powershell来做演示,不过我觉得应该可以直接移植。

$alter_opts = New-DbaScriptingOption;
$alter_opts.ScriptForAlter = $true;

$db = Get-DbaDatabase -SqlInstance . -Database myDB;
$tbl = $db.Tables['myTable'];
$tbl.Columns['ColumnToBeDropped'].MarkForDrop($true);

$tbl.Script($alter_opts);

魔法(如果有的话)就在那个 MarkForDrop($true) 调用中。这告诉 SMO 下次在 table 上调用 Alter() 时删除该列。