В SSMS, когда я нажимаю на базу данных "Tasks-> Generate Scripts", я получаю выходной сценарий.
Как я делаю то же с неграфическим инструментом?
Графический инструмент — это просто оболочка вокруг классов SMO, которые фактически реализуют сценарии, такие как класс Scripter.Существует пример написания сценариев для всех таблиц в базе данных с помощью SMO в MSDN: Scripting:
//Connect to the local, default instance of SQL Server.
{
Server srv = default(Server);
srv = new Server();
//Reference the AdventureWorks database.
Database db = default(Database);
db = srv.Databases("AdventureWorks");
//Define a Scripter object and set the required scripting options.
Scripter scrp = default(Scripter);
scrp = new Scripter(srv);
scrp.Options.ScriptDrops = false;
scrp.Options.WithDependencies = true;
//Iterate through the tables in database and script each one. Display the script.
//Note that the StringCollection type needs the System.Collections.Specialized namespace to be included.
Table tb = default(Table);
Urn[] smoObjects = new Urn[2];
foreach ( tb in db.Tables) {
smoObjects = new Urn[1];
smoObjects(0) = tb.Urn;
if (tb.IsSystemObject == false) {
StringCollection sc = default(StringCollection);
sc = scrp.Script(smoObjects);
string st = null;
foreach ( st in sc) {
Console.WriteLine(st);
}
}
}
}
Есть еще много примеров, как использовать его на различных других сайтах.
Для данных вы можете использовать утилиту массового экспорта под названием bcp
, которая позволяет вам выгружать данные из таблиц SQL Server в файлы, например файл CSV или файл с разделителями табуляции.
Я не знаю ни одной поставляемой SQL Server утилиты, которая могла бы создавать сценарии SQL с операторами INSERT, как это делает SQL Server Management Studio.
Для этого можно использовать PowerShell. Пример здесь для скриптовых таблиц. http://www.simple-talk.com/sql/sql-tools/using-powershell-to-generate-table-creation-scripts/ Я предполагаю, что можно будет расширить другие типы объектов базы данных.
Редактировать Просто заметил, что в заголовке указаны данные, а также схема. Я не знаю ничего бесплатного, что делало бы это из командной строки. Redgate SQL Compare Suite можно автоматизировать из командной строки, если вы покупаете правильную версию, или вы можете написать для этого сценарий приложения / оболочки питания.