C# - Adatabázis táblák tartalmának törlése

forráskód letöltése
Legyen a feladat a következő: egy tetszőleges MS SQL adatbázisban lévő összes táblának töröljük az összes sorát a lehető leggyorsabban és legegyszerűbben.
A példa működéséhez szükséges a ClearTables nevű adatbázis létrehozása, melyhez a mellékelt ClearAllTables.sql-t kell lefuttatnia.
A mellékelt példa futtatása előtt a Form1.cs forráskód 100. sorában lévő connStr változót módosítsa úgy, hogy a ClearTables adatbázis elérhetővé váljon.
Egy tábla tartalmának törléséhez a TRUNCATE TABLE sql parancsot használhatjuk. A törlés naplózás nélkül történik, így a végrehajtása gyors. Most már csak egy olyan tárolt eljárást kell készítenünk, mely képes egy adatbázis tábláin egy ciklussal végigmenni és minden egyes táblára meghívni a TRUNCATE TABLE parancsot.
Ez a tárolt eljárás a ClearAllTables nevet kapja.
create procedure ClearAllTables
as begin
Szükségünk lesz két változóra.
declare @str varchar(255)
declare @name varchar(50)
Valamint egy átmeneti táblára, melyben tároljuk az adatbázisban létező táblák neveit.
create table #tables (
  name varchar(30) 
)
Ezt az átmeneti táblát feltöltjük egy select lekérdezéssel, melyet a sysobjects rendszer táblára futtattunk oly módon, hogy az eredményben a felhasználói (user) típusú táblák megnevezései szerepeljenek.
insert into #tables select name from sysobjects (nolock) where type = 'u' 
set rowcount 1
Most már csak végig kell mennünk az átmeneti tábla összes során. Ehhez egy while ciklust használunk.
while @@error = 0 begin
Lekérdezzük a @name változóba a tábla nevét, majd rögtön töröljük is ezt a sort a táblából.
      select @name = name from #tables
      delete from #tables if @@rowcount < 1 break
Létrehozunk egy sztringet, melyben szerepel a TRUNCATE TABLE utasítás a törlendő tábla megnevezésével együtt.
      select @str = 'truncate table ' + @name 
Legvégül az exec utasítással futtatjuk az imént összeállított sql parancsot.
      exec ( @str )
end
A tárolt eljárás elkészítése után már csak használnunk kell azt. A használattal azonban legyünk körültekintőek, mert igen könnyen törölhetjük vele bármely adatbázisunk minden táblájának tartalmát.
A tárolt eljárás meghívása programból a hagyományos módon történik: egy SqlConnection osztállyal létrehozunk egy kapcsolatot az adatbázis szerverrel, majd az SqlCommand osztály segítségével futtatjuk a ClearAllTables tárolt eljárást.
    private void button1_Click(object sender, System.EventArgs e)
    {
      SqlConnection connection = new SqlConnection(connStr);
      connection.Open();
      SqlCommand c = new SqlCommand("ClearAllTables", connection);
      c.CommandType = CommandType.StoredProcedure;
      c.ExecuteNonQuery();                        
      connection.Close();
    }