ExecuteNonQuery doğru kullanmışsın
bi kaç tavsiyem olacak
öncelikle dispose yapma bunun yerine

using(SqlCommand cmdKaydet2 = new SqlCommand("sp_ekle",baglanti))
{

cmdKaydet2.CommandType = CommandType.StoredProcedure; 
cmdKaydet2.Parameters.Add(new SqlParameter("Adi", dt.Rows[i]["Adi"])); 
cmdKaydet2.Parameters.Add(new SqlParameter("Soyadi", dt.Rows[i]["Soyadi"])); 
cmdKaydet2.Parameters.Add(new SqlParameter("Yasi", dt.Rows[i]["Yasi"])); 
cmdKaydet2.Parameters.Add(new SqlParameter("Adres", dt.Rows[i]["Adres"])); 
cmdKaydet2.Parameters.Add(new SqlParameter("Adres2", dt.Rows[i]["Adres2"])); 
cmdKaydet2.Parameters.Add(new SqlParameter("Tel", dt.Rows[i]["Tel"])); 
cmdKaydet2.Parameters.Add(new SqlParameter("Tel2", dt.Rows[i]["Tel2"])); 
cmdKaydet2.ExecuteNonQuery(); 

}
bu şekilde dene..

ayrıca entity framework kullanmanı tavsiye ederim