Skip to content Skip to sidebar Skip to footer

Invoke Sql Script Wizard Programmatically

Could someone please tell me if there is someway to invoke the SQL Script Wizard programmatically or through the command line? It's a great tool for deployment but I am sick of ha

Solution 1:

The SSMS scripting wizard is just a shell over the Scripter SMO object capabilities. From the scripting example on MSDN:

using System;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Sdk.Sfc;


publicclassA {
   publicstaticvoidMain() { 
      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 tableif (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("--");
         }
      } 
   }

Solution 2:

You should be writing the scripts yourself as you create and change table structures, they should be in source control and associated with a particular release. There is no excuse for treating database changes any different than any other code and database changes should never be made using the GUI.

Post a Comment for "Invoke Sql Script Wizard Programmatically"