Таблица клонов SQL Server 2008 с индексами в .Net - PullRequest
1 голос
/ 23 июля 2010

Какой самый простой способ создать точную структурную реплику для Table1 и всех ее индексов в одной базе данных.Допустим, Table1Dupl , где все ограничения / индексы из Table1 с суффиксом Dupl .Я понимаю, что могу сделать ручное переименование таблицы сценариев как "создать в" из Management Studio, но ищу полностью программный способ.

Ответы [ 3 ]

1 голос
/ 26 июля 2010

Используйте 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);
0 голосов
/ 23 июля 2010

Вы можете исследовать SMO для этого .

Редактировать но я вижу, что вы пометили вопрос "smo", так что я думаю, вы это знаете!

Или, если вы хотите избежать зависимости от этого, вы можете увидеть скрипт Боргберда здесь.

0 голосов
/ 23 июля 2010

Программным способом является запрос столбцов, индексов, внешних ключей и триггеров, создание сценариев и выполнение их для целевой базы данных. Для столбцов и внешних ключей вы можете посмотреть на INFORMATION_SCHEMA представления. Для индексов исследуйте каталоги sys.sysindexes и sys.index_columns. Для триггеров изучите представление каталога sys.systriggers. Еще один способ помочь - запустить SQL Server Profiler при развертывании списка индексов для таблицы или при создании сценария индекса, чтобы увидеть, какой запрос Management Studio использует для получения этой информации.

...