Я хочу использовать 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 не очень хорошо задокументировано.