Таблица клонов 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 использует для получения этой информации.

Другие вопросы по тегам