Может, кто-нибудь подскажет, есть ли способ вызвать мастер сценариев SQL программно или через командную строку?
Это отличный инструмент для развертывания, но мне надоело устанавливать бесчисленные параметры каждый раз, когда я его использую.
Мастер сценариев SSMS - это просто оболочка для возможностей объекта Scripter SMO.Из примера сценариев на MSDN:
Scripter
using System; using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Sdk.Sfc; public class A { public static void Main() { String dbName = "AdventureWorksLT2008R2"; // database name // Connect to the local, default instance of SQL Server. Server srv = new Server(); // Reference the database. Database db = srv.Databases[dbName]; // Define a Scripter object and set the required scripting options. Scripter scrp = new Scripter(srv); scrp.Options.ScriptDrops = false; scrp.Options.WithDependencies = true; scrp.Options.Indexes = true; // To include indexes scrp.Options.DriAllConstraints = true; // to include referential constraints in the script // Iterate through the tables in database and script each one. Display the script. foreach (Table tb in db.Tables) { // check if the table is not a system table if (tb.IsSystemObject == false) { Console.WriteLine("-- Scripting for table " + tb.Name); // Generating script for table tb System.Collections.Specialized.StringCollection sc = scrp.Script(new Urn[]{tb.Urn}); foreach (string st in sc) { Console.WriteLine(st); } Console.WriteLine("--"); } } }
Вы должны писать сценарии самостоятельно, когда создаете и изменяете структуры таблиц, они должны быть в системе контроля версий и связаны с определенной версией.Нет никаких оправданий для обработки изменений базы данных, отличных от любого другого кода, и изменения базы данных никогда не должны выполняться с использованием графического интерфейса.