SQL Server параллельно с Oracle DBMS_METADATA.GET_DDL? - PullRequest
4 голосов
/ 03 октября 2009

Я ищу решения для командной строки или сценариев для извлечения DDL из SQL Server 2005+ для всех объектов базы данных: таблиц, хранимых процедур, представлений, индексов / индексов, ограничений и т. Д. Инструменты GUI не представляют интереса.

Предпочтение отдается встроенным инструментам, так как это было бы наиболее сопоставимым с компонентом Oracle DBMS_METADATA. Кроме того, предпочтение для решения, которое является столь же простым как Oracle для получения DDL - например, один лайнер:


    SELECT DBMS_METADATA.GET_DDL('TABLE', 'MY_TABLE') FROM DUAL

Примечание. Кажется, что разобраться с процедурами в SQL Server 2005 просто, но я не могу найти ссылок на что-то похожее для других объектов (например, таблиц).


    SELECT definition 
    FROM Sys.sql_modules 
    WHERE object_id = OBJECT_ID('MyProc')

Заранее спасибо!

Ответы [ 2 ]

4 голосов
/ 03 октября 2009

В языке Transact-SQL нет поддержки. Клиентские библиотеки (SMO) могут сделать это с помощью объекта Scripter , см. Пример на http://msdn.microsoft.com/en-us/library/ms162153.aspx.. SMO из PowerShell можно использовать в качестве решения на основе сценариев.

В SQL Management Studio также есть опция (щелкните правой кнопкой мыши базу данных, перейдите к Задачам, выберите Сгенерировать сценарии), она использует SMO Scripter под обложками.

2 голосов
/ 28 октября 2009

Я написал SMOscript , инструмент командной строки, который использует SMO для генерации файлов DDL всех объектов базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...