1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
namespace OptimisationBase
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Démarrage de l'optimisation de la base offline");
using (SqlConnection cnx = new SqlConnection("Server=(localdb)\\v11.0;Integrated Security=true;AttachDbFileName=C:\\ProgramData\\update.crm_webofflinedb\\offline.mdf;"))
{
Console.WriteLine("Connexion à la base de données");
cnx.Open();
using (SqlCommand cmd = cnx.CreateCommand())
{
Console.WriteLine("Mise à jour des statistiques");
cmd.CommandText = "exec sp_updatestats";
cmd.ExecuteNonQuery();
Console.WriteLine("Recherche des index");
cmd.CommandText = "SELECT 'ALTER INDEX [' + i.name + '] ON [' + OBJECT_SCHEMA_NAME(i.object_id) + '].[' + OBJECT_NAME(i.object_id) + '] REBUILD' FROM sys.indexes AS i where i.name is not null and OBJECT_NAME(i.object_id) like 'OFFLINE_WEB%'";
using (SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
{
List<string> indexes = new List<string>();
while (dr.Read())
{
indexes.Add(dr.GetString(0));
}
dr.Close();
foreach (string s in indexes)
{
Console.WriteLine(s);
cmd.CommandText = s;
cmd.ExecuteNonQuery();
}
}
}
Console.WriteLine("Déconnexion de la base de données");
cnx.Close();
}
Console.WriteLine("Fin de l'optimisation de la base offline");
}
}
} |
Partager