Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static void Main(string[] args)
- {
- var arguments = args.Select(x => x.ToLower()).ToList();
- if (arguments.Count == 0 || arguments.Contains("-help"))
- {
- Console.WriteLine("-d - Database Name");
- Console.WriteLine("-i - Output Sql File Name");
- Console.WriteLine("-s - Server Instance");
- Console.WriteLine("-u - User Name");
- Console.WriteLine("-p - Password");
- Console.WriteLine("It should be 'tables.txt' file in folder with names of tables to script; if it does not exist the application scripts all tables with prefix 'GMP_'");
- Console.ReadKey();
- }
- else if (arguments.Count > 1 && arguments.Contains("-d") && args.Contains("-i"))
- {
- if (arguments.Count <= arguments.IndexOf("-d") + 1)
- {
- throw new ArgumentException("Database Name");
- }
- if (arguments.Count <= arguments.IndexOf("-i") + 1)
- {
- throw new ArgumentException("Output Sql File Name");
- }
- var dbName = arguments[arguments.IndexOf("-d") + 1];
- var outputFileName = arguments[arguments.IndexOf("-i") + 1];
- var srv = new Server();
- if (arguments.Contains("-s") && args.Contains("-u") && arguments.Contains("-p"))
- {
- if (arguments.Count <= arguments.IndexOf("-s") + 1)
- {
- throw new ArgumentException("Server Instance");
- }
- if (arguments.Count <= arguments.IndexOf("-u") + 1)
- {
- throw new ArgumentException("User Name");
- }
- if (arguments.Count <= arguments.IndexOf("-p") + 1)
- {
- throw new ArgumentException("Password");
- }
- var connection = new ServerConnection(arguments[arguments.IndexOf("-s") + 1], arguments[arguments.IndexOf("-u") + 1], arguments[arguments.IndexOf("-p") + 1]);
- srv = new Server(connection);
- }
- // read names of tables
- var tablesFromFile = new List<string>();
- if (File.Exists("tables.txt"))
- {
- using (var file = File.OpenText("tables.txt"))
- {
- while (file.Peek() > 0)
- {
- tablesFromFile.Add(file.ReadLine());
- }
- }
- }
- Database db = srv.Databases[dbName];
- var dropKeys = new Scripter(srv) {Options = {ScriptDrops = true, IncludeIfNotExists = true, DriForeignKeys = true}};
- var listOfScripts = new List<Scripter>
- {
- new Scripter(srv) {Options = {ScriptDrops = true, IncludeIfNotExists = true, DriAllKeys = false}},
- new Scripter(srv) {Options = {ScriptDrops = false, ScriptSchema = true, WithDependencies = false, DriIndexes = true, DriClustered = true, IncludeIfNotExists = true, DriAllKeys = false}},
- new Scripter(srv) {Options = {ScriptDrops = false, ScriptSchema = true, DriDefaults = false, DriIndexes = false, DriPrimaryKey = false, DriClustered = false, Default = false, DriAll = false, DriForeignKeys = true, IncludeIfNotExists = true, DriAllKeys = false}},
- new Scripter(srv) {Options = {DriIndexes = true, Default = true, DriDefaults = true, DriClustered = false, IncludeIfNotExists = true, DriAll = true, DriAllConstraints = true, DriAllKeys = true, SchemaQualify = true, SchemaQualifyForeignKeysReferences = true, NoCollation = true}}
- };
- using (var file = File.CreateText(outputFileName))
- {
- foreach (Table tb in db.Tables)
- {
- if ((tablesFromFile.Count > 0 && tablesFromFile.Contains(tb.Name) || (tablesFromFile.Count == 0 && tb.Name.StartsWith("GMP_"))))
- {
- if (tb.IsSystemObject == false)
- {
- foreach (ForeignKey foreignKey in tb.ForeignKeys)
- {
- System.Collections.Specialized.StringCollection scd = dropKeys.Script(new[] { foreignKey.Urn });
- foreach (string st in scd)
- {
- file.WriteLine(st);
- file.WriteLine("GO");
- }
- }
- file.WriteLine();
- }
- }
- }
- foreach (var script in listOfScripts)
- {
- foreach (Table tb in db.Tables)
- {
- if ((tablesFromFile.Count > 0 && tablesFromFile.Contains(tb.Name) || (tablesFromFile.Count == 0 && tb.Name.StartsWith("GMP_"))))
- {
- if (tb.IsSystemObject == false)
- {
- System.Collections.Specialized.StringCollection scd = script.Script(new[] { tb.Urn });
- foreach (string st in scd)
- {
- file.WriteLine(st);
- file.WriteLine("GO");
- }
- file.WriteLine();
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement