如何使用带有 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()
时删除该列。
我想使用 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()
时删除该列。