diff --git a/src/ScriptSqlConfig/Program.cs b/src/ScriptSqlConfig/Program.cs index 3406666..586d2be 100644 --- a/src/ScriptSqlConfig/Program.cs +++ b/src/ScriptSqlConfig/Program.cs @@ -175,7 +175,7 @@ 2. It will use trusted authentication unless both the /username #if DEBUG Console.WriteLine(""); Console.WriteLine("Press any key to continue...."); - Console.ReadLine(); + Console.ReadKey(false); #endif @@ -205,10 +205,10 @@ 2. It will use trusted authentication unless both the /username #if DEBUG Console.WriteLine("Press any key to continue...."); - Console.ReadLine(); + Console.ReadKey(false); #endif - - } + + } private static void SetVersions(string server) { @@ -276,6 +276,7 @@ private static void ScriptInstance(string server, string directory) ScriptEventNotifications(conn, instanceDirectory, so); ScriptOtherObjects(srv, instanceDirectory, so); ScriptDatabaseOptions(srv, instanceDirectory, so); + ScriptResourceGovernor(srv, instanceDirectory, so); WriteMessage("Scripting User Objects and Security in System Databases..."); ScriptDatabase(srv.Name.ToString(), "master", Path.Combine(instanceDirectory, @"Databases\master")); @@ -1434,7 +1435,74 @@ private static void ScriptDatabaseRoles(Database db, string directory, Scripting } - private static void RemoveSqlFiles(string directory) + + private static void ScriptResourceGovernor(Server smoServer, string directory, ScriptingOptions options) + { + if (VERBOSE) + WriteMessage("Resource Governor..."); + + StringCollection sc = new StringCollection(); + + if (smoServer.Edition.Contains("Enterprise") || smoServer.Edition.Contains("Developer")) + { + ResourceGovernor rg = smoServer.ResourceGovernor; + if (rg != null) + { + sc.Add("USE master;"); + string classifierFunction = rg.ClassifierFunction; + + if (!String.IsNullOrEmpty(classifierFunction)) + { + int objId = -1; + using (SqlConnection conn = GetConnection(smoServer.Name, "master")) + { + string sql = "SELECT OBJECT_ID(@name)"; + SqlCommand cmd = new SqlCommand(sql); + cmd.Connection = conn; + cmd.Connection.Open(); + cmd.Parameters.Add(new SqlParameter("@name", System.Data.SqlDbType.NVarChar, 200)); + cmd.Parameters[0].Value = classifierFunction; + objId = (int)(cmd.ExecuteScalar()); + } + + + + foreach (UserDefinedFunction udf in smoServer.Databases["master"].UserDefinedFunctions) + { + if (udf.ID == objId) + { + //if possible, script classifier function + sc.Add("ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = NULL);"); + sc.Add("ALTER RESOURCE GOVERNOR DISABLE;"); + sc.Append(udf.Script(options)); + break; + } + + } + + // script Resource Governor configurations + sc.Append(rg.Script(options)); + + // script Resource Pools + foreach (ResourcePool pool in rg.ResourcePools) + { + sc.Append(pool.Script(options)); + + // script Workload Groups + foreach (WorkloadGroup wg in pool.WorkloadGroups) + { + sc.Append(wg.Script(options)); + } + } + + WriteFile(sc, Path.Combine(directory, "ResourceGovernor.sql"), true); + } + } + } + } + + + private static void RemoveSqlFiles(string directory) { throw new NotImplementedException("RemoveSqlFiles shouldn't be called."); //DirectoryInfo dir = new DirectoryInfo(directory); diff --git a/src/ScriptSqlConfig/Properties/AssemblyInfo.cs b/src/ScriptSqlConfig/Properties/AssemblyInfo.cs index 4123544..97404c2 100644 --- a/src/ScriptSqlConfig/Properties/AssemblyInfo.cs +++ b/src/ScriptSqlConfig/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2012.5")] -[assembly: AssemblyFileVersion("2012.5")] +[assembly: AssemblyVersion("2016.1")] +[assembly: AssemblyFileVersion("2016.1")] diff --git a/src/ScriptSqlConfig/ScriptSqlConfig.csproj b/src/ScriptSqlConfig/ScriptSqlConfig.csproj index e2e6ba0..61714c5 100644 --- a/src/ScriptSqlConfig/ScriptSqlConfig.csproj +++ b/src/ScriptSqlConfig/ScriptSqlConfig.csproj @@ -35,15 +35,24 @@ 4 - - - FakesAssemblies\Microsoft.SqlServer.ConnectionInfo.11.0.0.0.Fakes.dll + + False + + + False + + + False + + + False + + + False + + + False - - - - -