Таблица клонов SQL Server 2008 с индексами в.Net
Какой самый простой способ создать точную структурную реплику для Table1 и всех ее индексов в одной базе данных. Скажем, Table1Dupl, где все ограничения / индексы из Table1 с суффиксом Dupl. Я понимаю, что могу сделать ручное переименование таблицы сценариев как "создать в" из Management Studio, но ищу полностью программный способ.
3 ответа
Используйте SMO, чтобы получить ссылку на вашу таблицу.
Если у вас есть эта ссылка, просто используйте ScriptOptions, чтобы указать, что вы хотите написать в сценарии.
После выполнения сценария вы получите коллекцию StringCollection, содержащую используемый текст, точно так же, как показано при выполнении "Таблица сценариев как".
Поскольку это текст в памяти, вы можете выполнить простой поиск и замену.
Microsoft.SqlServer.Management.Smo.Table oSmo;
Microsoft.SqlServer.Management.Smo.ScriptingOptions oScriptingOptions
= new Microsoft.SqlServer.Management.Smo.ScriptingOptions();
oScriptingOptions.Triggers = true;
StringCollection myStrColl = new StringCollection();
myStrColl = oSmo.Script(oScriptingOptions);
Вы могли бы исследовать SMO для этого.
Отредактируйте, но я вижу, что вы пометили вопрос "smo", так что я думаю, вы это знаете!?
Или, если вы хотите избежать зависимости от этого, вы можете увидеть сценарий Боргберда здесь.
Программным способом является запрос столбцов, индексов, внешних ключей и триггеров, создание сценариев и выполнение их для целевой базы данных. Для столбцов и внешних ключей, вы можете посмотреть на INFORMATION_SCHEMA
Просмотры. Для индексов исследуем sys.sysindexes
а также sys.index_columns
каталог просмотров. Для триггеров, исследуйте sys.systriggers
просмотр каталога. Другой способ помочь - запустить SQL Server Profiler, когда вы расширяете список индексов для таблицы, или когда вы создаете сценарий для индекса, чтобы посмотреть, какой запрос Management Studio использует для получения этой информации.