LINQPad Command-Line and Scripting
Sample usage:
Here is the sample linq script:
Sample usage:
CALL C:\...\LinqPad\lprun.exe "C:\...\Queries\AttachDatabases.linq" DEVThis runs the given linq query. The sample is a "C# Program" and has a "Main" method taking "string[] args" as a paremeter. In this way the "DEV" string at the end of the line is passed as a parameter to the linq program.
Here is the sample linq script:
<Query Kind="Program" /> void Main(string[] args) { string attachFolder = @"C:\Databases\"; if ((args != null) && (args.Length == 1)) { attachFolder = Path.Combine(attachFolder, args[0]); } Console.WriteLine("Attaching to databases in \'" + attachFolder + "\'"); Console.WriteLine(""); var server = @".\"; var databaseNames = new[] { "XXX", "YYY", "ZZZ", "AAA" }; using(var connection = new SqlConnection( string.Format("Server={0};Database=master;Trusted_Connection=True;", server))) { connection.Open(); // attach the databases foreach(var database in databaseNames) { var dataFile = Path.Combine(attachFolder, database + "_Data.MDF"); if (File.Exists(dataFile)) { Console.WriteLine("Attaching {0}", database); var attachCommand = connection.CreateCommand(); attachCommand.CommandText = "sp_attach_db @dbName, @dataFileName, @logFileName"; attachCommand.Parameters.AddWithValue("dbName", database); attachCommand.Parameters.AddWithValue("dataFileName", dataFile); attachCommand.Parameters.AddWithValue("logFileName", Path.Combine(attachFolder, database + "_Log.LDF")); attachCommand.ExecuteNonQuery(); } else { Console.WriteLine("No data file for {0}", database); } } } Console.WriteLine(""); Console.WriteLine("Press any key to continue ..."); Console.ReadKey(false); }If you want the script to hang around a bit so that you can read the error messages then you can add the the following lines to the end
Console.WriteLine(""); Console.WriteLine("Press any key to continue ..."); Console.ReadKey(false);This keeps the script alive until a key is pressed.
No comments:
Post a Comment