SMO を使用して、外部キーを削除するスクリプトを生成する次の PowerShell スクリプトがあります ($scripter は Scripter オブジェクトで、$db は Database オブジェクトです)。
$scripter.Options.ScriptDrops = $true;
$scripter.Options.DriForeignKeys = $true;
$scripter.Options.DriChecks = $true;
$dbObjCollection = @();
foreach($tb in $db.Tables)
{
$dbObjCollection += $tb.Checks;
$dbObjCollection += $tb.ForeignKeys;
}
foreach ($dbObj in $dbObjCollection)
{
$smoObjects = @();
$smoObjects += $dbObj.Urn;
if ($dbObj.IsSystemObject -eq $false)
{
$sc = $scripter.EnumScript($smoObjects);
}
}
しかし、うまくいきません。Scripter オブジェクトの FileName プロパティで指定されたファイルにデータは書き込まれません。
外部キーのみのドロップを生成するように Scripter オブジェクトを設定する方法と、これを実現するために Scripter オブジェクトに渡すオブジェクトについて、誰かがガイダンスを提供できますか?