Команда SQL для генерации текста схемы (аналогично CreateTo или AlterTo) - PullRequest
2 голосов
/ 15 апреля 2009

SQL Server 2005. Существует ли SQL-запрос, который будет возвращать текстовое поле, содержащее информацию о схеме того же типа, что и при создании таблицы правой кнопкой мыши -> Таблица сценариев как -> Создать в (или Изменить в) из SQL Server Management Studio?

Я ищу единый / плоский формат, который описывает всю таблицу, включая ограничения, индексы и т. Д.

Мне известно:

sp_help table_name

но это не обеспечивает единый плоский формат, который я ищу. В идеале это должно быть в формате сценариев, таком как результат AlterTo, который может быть выполнен на сервере.

Это для запланированного процесса, который еженедельно документирует схемы таблиц для регистрации в системе контроля версий (SVN).

Ответы [ 4 ]

1 голос
/ 28 мая 2009

Нет такой команды в SQL Server. В первую очередь это связано с тем, что средство для создания сценариев на самом деле находится в SMO, а не в самом SQL Server. Существует ряд бесплатных консольных инструментов командной строки, которые можно сделать с помощью xp_CmdShell.

Однако, если вы действительно хотите сделать это из T-SQL, вам потребуется сценарий или хранимая процедура, которая перечисляет все атрибуты таблиц, столбцы, типы данных столбцов, значения по умолчанию, nullabilty и т. Д. И т. Д., А затем собирает заново это в сценарий CREATE TABLE. Это Огромная задача. Это плохие новости. Хорошей новостью является то, что кто-то (Лоуэлл Изагирре) уже сделал это и опубликовал в этой статье (http://www.sqlservercentral.com/scripts/Miscellaneous/30730/) на SQLServerCentral.Com.

Наслаждайтесь.

1 голос
/ 15 апреля 2009

Не совсем. Таблица def - это набор столбцов, ограничений и т. Д.

Существует плагин SVN, который может помочь, называется ScriptDB4SVN . Я не использовал это лично, я иду по слухам.

1 голос
/ 27 мая 2009

снова искал в сети ответ на этот вопрос, и наткнулся на этот ТАК вопрос. Он точно не собирает все те же данные, что и SQL Management Studios Create-to, но этого достаточно для моих целей (создание сценариев структуры базы данных для контроля версий).

0 голосов
/ 15 апреля 2009

Не совсем - вы можете использовать C # (или VB.NET) и SMO ​​(объекты управления SQL) для сценариев объектов вашей базы данных (таблицы и все), или вы можете использовать SQL, чтобы получить список столбцов для таблицы :

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Your Table Name here'

Но я не знаю ни одного простого способа в самом SQL создавать скрипты Create / Alter для объектов базы данных, извините.

Марк

...