Создать скрипт из базы данных в C # - PullRequest
2 голосов
/ 17 мая 2011

Я занимаюсь разработкой приложения на C #, и мне нужно окно, в котором отображаются все существующие таблицы в базе данных. Пользователь выбирает таблицы, которые хотят воссоздать в новой базе данных в формате SQL, некоторые таблицы должны содержать начальную информацию.а другой только структура таблицы.

Есть ли какая-нибудь помощь, чтобы воссоздать эту таблицу?

Я думаю, чтобы сгенерировать сценарий существующей таблицы (* .sql) и создания таблицы изфайл в новую базу данных, но я не знаю, как сделать запрос для создания таблицы SQL.

PS: существующая таблица находится в sqlserver, и я хочу создать таблицу в sqlcompact.

Ответы [ 5 ]

0 голосов
/ 24 мая 2011

Взгляните на следующие представления:

Information_Schema.TABLES
Information_Schema.COLUMNS
Information_Schema.REFERENTIAL_CONSTRAINTS
Information_Schema.TABLE_CONSTRAINTS 
Information_Schema.KEY_COLUMN_USAGE

У меня нет кода для вручения (извините), но я использовал его раньше, чтобы воссоздать определение таблицы на основе собственных метаданных базы данныхв чистом TSQL, и нет никаких причин, по которым это не может быть сделано в C # внутри приложения.Объедините их вместе, объявите строку для вашего окончательного определения и наведите курсор на набор результатов, чтобы получить все поля в вашей таблице, создавая выходные данные.Когда вы закончите, верните это клиенту.В целях тестирования сравните вывод вашего кода с тем, что генерирует SSMS, когда вы просите его создать сценарий для создания таблицы, и, надеюсь, вы сможете сравнительно быстро воссоздать определения таблиц.

0 голосов
/ 18 мая 2011

Вы можете использовать мой API / библиотеку сценариев для создания сценариев CREATE TABLE на правильном диалекте SQL Server Compact.SMO не может сделать это для вас, я нацелился на различные версии SQL Server.http://exportsqlce.codeplex.com

0 голосов
/ 17 мая 2011

Я не знаю различий между Sql Server и Sql Server CE , но вы можете использовать Sql Server Management Studio для создания сценариев для таблиц, процедур и т. Д. Щелкните правой кнопкой мыши базу данных, затем Задачи> Создать сценарии.

Как я знаю, большинство не поддерживаемых функций - это запросы, процедуры, представления ...

0 голосов
/ 17 мая 2011

Если вы используете NHibernate для доступа к данным, у них есть хороший инструмент SchemaExport, который будет работать для всех баз данных, поддерживаемых NHibernate (не только для SQL Server). Таким образом, вашим решением будет перечислить все сопоставленные сущности, позволить пользователю выбрать те, которые он хочет, создать новую конфигурацию с выбранными сущностями и использовать SchemaExport для генерации SQL на нужном вам диалекте.

0 голосов
/ 17 мая 2011

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

Объекты управления SQL Server

Быстрый пример здесь:

http://www.sqlservercentral.com/articles/SMO/scriptdatabaseobjectswithsmo/2342/

...