Таблица сценариев SMO и схема изменения - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу использовать SMO для копирования некоторых таблиц из одной базы данных в другую. На этом этапе я хочу изменить схему целевой таблицы. Я попытался изменить схему, используя объект таблицы, но затем я получаю сообщение об ошибке, что схема не существует в исходной базе данных. Кажется, что он хочет изменить схему напрямую.

Server server = new Server("Servername");
Database sourceDatabase = server.Databases["Databasename"];
StringBuilder sb = new StringBuilder();

foreach (Table tbl in sourceDatabase.Tables)
{
    tbl.ChangeSchema("staging_dbo");
    ScriptingOptions options = new ScriptingOptions();
    options.ClusteredIndexes = true;
    options.Default = true;
    options.DriAll = true;
    options.Indexes = true;
    options.IncludeHeaders = true;

    StringCollection coll = tbl.Script(options);
    foreach (string str in coll)
    {
        sb.Append(str);
        sb.Append(Environment.NewLine);
    }
}

Возможно ли изменить схему в табличном объекте просто для генерации сценария без изменения схемы в исходной базе данных? Я мог бы также заменить схему в готовом скрипте, но я думаю, что это не очень хорошо.

Мне кажется, что SMO не очень хорошо задокументировано.

...