2009-12-17 4 views
4

Не уверен, что это принадлежит или ServerFault, но мне интересно, знает ли кто-нибудь бесплатный инструмент для экспорта схемы SQL Server 2008? Это только для таблиц и их индексов, внешних ключей и т. Д., И это должен быть инструмент командной строки для выполнения как часть процесса сборки. Если он может читать строку подключения .net, это было бы потрясающе (следовательно, тег .net)Бесплатный экспорт схемы для SQL Server 2008?

Данные не нужны, и любые варианты управления версиями/diff также «приятны, но не нужны». И да, я в курсе удивительных инструментов SQL Server Red-гейта, к сожалению, это хобби проект с 0 бюджета :-(

ответ

5

Не уверен в готовом инструменте, но это легко достаточно для работы с библиотекой SMO (Microsoft.SqlServer.Smo, .SmoEnum, .SqlEnum):

using Microsoft.SqlServer.Management.Smo; 

var server = new Server("localhost"); 
var database = server.Databases["databaseName"]; 
var transfer = new Transfer(database); 
var options = new ScriptingOptions(); 
// set transfer and options object properties to reflect what you want to script: 
// i.e. all tables, indexes, triggers, etc. 
options.FileName = "c:\\temp\\databaseName_schema.sql"; 
transfer.Options = options; 
transfer.ScriptTransfer(); 

Я построил простой инструмент, используя этот метод, чтобы восстановить скрипт создания базы данных моего продукта как часть шагов предварительной сборки в построителе настроек.

+0

FYI: написав несколько из них, я могу сказать, что вы замаскируете твердую часть, которая правильно устанавливает параметры. Это особенно важно, так как многие параметры специфичны для конкретного типа SQL (таблицы, триггеры и т. Д.) И часто генерируют исключения, если они оставлены для типов, к которым они не применяются. – RBarryYoung

+0

Не уверен, что вы имеете в виду, RBY. Варианты, которые я имею в виду, - это все простые логические значения: «CopyAllDatabaseTriggers», «CopyAllTables», «IncludeDatabaseContext», «WithDependencies» и т. Д. Существует несколько из них, правда, но это просто вопрос, который больше всего подходит для «истины», обычными исключениями являются объекты безопасности, такие как логины и пользователи, которые в зависимости от исходной базы данных могут содержать записи, нежелательные в конечном скрипте. –

2

Просто из любопытства вы пытались с помощью проектов SQL Server в Visual Studio?

Еще один способ сделать это - с помощью SQL-скриптов, так как я уверен, что вы знаете. Команда генерации скриптов может быть запущена в командной строке, я думаю.

+0

Я думал, что было лишь в VS System Team Database Edition,, но я также нашел «базы данных Project "в Visual Studio 2008 Professional. Я посмотрю на это, спасибо за головы! –

+0

Нет команды «Создать скрипт» в T-SQL, а также AFAIK в SQLCMD. Это только задача меню/кнопки в Management Studio (которая вызывает SMO для этого). Однако он может быть написан с помощью Powershell (SQL 2008), который может быть тем, о чем вы думали. – RBarryYoung

1

В CodePlex есть несколько бесплатных инструментов командной строки, подобных этому. Один из них - Scriptio, here.

2

Вы можете всегда использовать SQL Server Management Studio для этого, щелкните правой кнопкой мыши базу данных, выберите «Задачи», а затем «Сгенерировать скрипты».

0

Microsoft выпустила новый инструмент несколько недель назад под названием mssql-scripter. Это бесплатный инструмент командной строки с открытым исходным кодом на основе Python, и вы можете найти официальное объявление here. По сути, скриптер позволяет создавать сценарий T-SQL для вашего объекта базы данных/базы данных в виде файла .sql. Вы можете сгенерировать файл, а затем выполнить его. Это может быть хорошим решением для создания схемы (по умолчанию) вашего db и его объектов такими таблицами и индексами, чтобы также видеть diff, так как это генерируемый .sql-файл. Вот простой пример использования, чтобы вы начали:

$ pip install mssql-scripter 
# script the database schema and data piped to a file. 
$ mssql-scripter -S localhost -d AdventureWorks -U sa > ./adventureworks.sql 

Больше примеров использования на нашей странице GitHub здесь: https://github.com/Microsoft/sql-xplat-cli/blob/dev/doc/usage_guide.md

Смежные вопросы