MSSQL рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреАрдврд╝реА

рд▓рдЧрд╛рддрд╛рд░ рдФрд░ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдХреНрд╕рд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдкреВрдЫрддреЗ рд╣реИрдВред рдпрд╣ рджрд┐рди рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд░реБрдЪрд┐ рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдХреЗ рдЕрдВрдд рдХреЗ рдмрд╛рдж рд╣рд░ рджрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХреА рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВред SQL рд╕рд░реНрд╡рд░ рдкреНрд░рдмрдВрдзрди рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдпрд╛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВред рдЖрдк рдЕрдкрдиреЗ .NET рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ SQL рд╕рд░реНрд╡рд░ рдкреНрд░рдмрдВрдзрди рд╕реНрдЯреВрдбрд┐рдпреЛ рд╕реЗ рд╕реЗрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдкреВрд░реНрдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрд╢рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рд╡рд┐рд╡рд░рдг: рддрд╛рд▓рд┐рдХрд╛рдПрдБ, рд╡рд┐рдЪрд╛рд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдБ рдиреАрдЪреЗред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреБрд▓рдЧреНрдирдХ

рдирд╛рдо рд╕реНрдерд╛рди рд╕реЗ рдХрдХреНрд╖рд╛рдПрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ:
using Microsoft.SqlServer.Management.Smo; using Microsoft.SqlServer.Management.Common; using Microsoft.SqlServer.Management.Sdk.Sfc; 

рд╡реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЬрд┐рдирдореЗрдВ рдЙрдирдХреЗ рдирд╛рдо рд╕рдорд╛рди рд╣реИрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ:
C: \ Program Files \ Microsoft SQL Server \ 90 \ SDK \ Assemblies
рдпрд╛
C: \ Program Files \ Microsoft SQL Server \ 100 \ SDK \ Assemblies
SQL рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рд░рдирд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЗрдмрд▓реНрд╕, рд╡реНрдпреВрдЬрд╝, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреБрдХреНрдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рд╣реЗрдЬрддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдкреАрдврд╝реА рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ (рдЪрд╛рдмрд┐рдпрд╛рдБ, рдЕрдиреБрдХреНрд░рдорд┐рдд, рдЖрджрд┐) рдФрд░ рдмрд┐рдирд╛ рдЦрд╛рддреЗ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред

 //   Server myServer = new Server(@"myServ"); // Windows myServer.ConnectionContext.LoginSecure = true; //  myServer.ConnectionContext.Connect(); //  ,       string dir = Application.StartupPath +@"\"+ DateTime.Now.Day.ToString() + "_" + DateTime.Now.Month.ToString() + "_" + DateTime.Now.Year.ToString(); Directory.CreateDirectory(dir); // ,   GenerateTableScript(myServer,dir); // ,   GenerateProceduresScript(myServer, dir); // ,   GenerateViewScript(myServer, dir); //  myServer.ConnectionContext.Disconnect(); 

рдЯреЗрдмрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрд╢рди

  private static void GenerateTableScript(Server myServer, string path) { Directory.CreateDirectory(path + @"\Tables\"); string text = ""; string textWithDependencies = ""; //  ,     Scripter scripter = new Scripter(myServer); //    , "ZZZ" -    Database myAdventureWorks = myServer.Databases["ZZZ"]; //      ScriptingOptions scriptOptions = new ScriptingOptions(); //        //    Drop scriptOptions.ScriptDrops = false; //    If Not Exists scriptOptions.IncludeIfNotExists = false; //   foreach (Table myTable in myAdventureWorks.Tables) { // sql      StringCollection tableScripts = myTable.Script(scriptOptions); //    string newSql = ""; //  foreach (string script in tableScripts) { newSql = newSql + script; text = text + script; } //        File.WriteAllText(path + @"\Tables\" + myTable.Name + ".sql", newSql); //    scriptOptions.DriAllConstraints = true; scriptOptions.DriAllKeys = true; scriptOptions.DriDefaults = true; scriptOptions.DriForeignKeys = true; scriptOptions.DriIndexes = true; scriptOptions.DriNonClustered = true; scriptOptions.DriPrimaryKey = true; scriptOptions.DriUniqueKeys = true; tableScripts = myTable.Script(scriptOptions); newSql = ""; foreach (string script in tableScripts) { newSql = newSql + script; textWithDependencies = text + script; } //        File.WriteAllText(path + @"\Tables\" + myTable.Name + "_WithDependencies.sql", newSql); } //    File.WriteAllText(path + @"\" + "AllTable_WithDependencies.sql", text); File.WriteAllText(path + @"\" + "AllTable.sql", text); } 

рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рд╕реГрдЬрди

  private static void GenerateViewScript(Server myServer, string path) { Directory.CreateDirectory(path + @"\View\"); string text = ""; Scripter scripter = new Scripter(myServer); Database myAdventureWorks = myServer.Databases["ZZZ"]; ScriptingOptions scriptOptions = new ScriptingOptions(); scriptOptions.ScriptDrops = false; scriptOptions.IncludeIfNotExists = false; foreach (Microsoft.SqlServer.Management.Smo.View myView in myAdventureWorks.Views) { StringCollection ProcedureScripts = myView.Script(scriptOptions); ProcedureScripts = myView.Script(); string newSql = ""; foreach (string script in ProcedureScripts) { newSql = newSql + script; text = text + script; } File.WriteAllText(path + @"\Views\" + myView.Name + ".sql", newSql); } File.WriteAllText(path + @"\" + "AllView.sql", text); } 

рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреАрдврд╝реА

  private static void GenerateProceduresScript(Server myServer, string path) { Directory.CreateDirectory(path + @"\Procedures\"); string text = ""; Scripter scripter = new Scripter(myServer); Database myAdventureWorks = myServer.Databases["ZZZ"]; ScriptingOptions scriptOptions = new ScriptingOptions(); scriptOptions.ScriptDrops = false; scriptOptions.IncludeIfNotExists = false; foreach (StoredProcedure myProcedure in myAdventureWorks.StoredProcedures) { StringCollection ProcedureScripts = myProcedure.Script(scriptOptions); ProcedureScripts = myProcedure.Script(); string newSql = ""; foreach (string script in ProcedureScripts) { newSql = newSql + script; text = text + script; } File.WriteAllText(path + @"\Procedures\" + myProcedure.Name + ".sql", newSql); } File.WriteAllText(path + @"\" + "AllProcedure.sql", text); } 

рдирд┐рд╖реНрдХрд░реНрд╖

рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдирд╛рдо рд╕реЗ рдкреГрд╖реНрдард╛рдВрдХрд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд╛рдореЛрдВ рдореЗрдВ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рджрд┐рд╢рд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИред рдПрд╕рд╡реАрдПрди рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рддреБрд▓рдирд╛ рд▓рд┐рдЦ тАЛтАЛрд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рддрдереНрдп рдкрд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рдХреЛрдб рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред
рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЖрдзрд╛рд░ рд▓реЗрдЦ рдерд╛: SQL рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдПрд╕рдПрдордУ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛рдмреЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрдирд░реЗрдЯ рдХрд░реЗрдВ

Source: https://habr.com/ru/post/In145263/


All Articles