J'exécute le code suivant via CLR, y a-t-il une raison pour laquelle le message n'est pas imprimé sur le SQL Server, at-il besoin d'attendre que la procédure stockée retourne toutes les lignes est d'environ 7 milliards de lignes de retour)SQLDatareader via CLR ne pas retourner le message SQL droit
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "spCommand_Select_Rows_For_Delete";
cmd.CommandTimeout = 41600;
SqlDataReader reader = cmd.ExecuteReader();
try
{
string strSQL = "";
SqlContext.Pipe.Send(DateTime.Now.ToString() + " - Started working with ProductTable");
while (reader.Read())
{
strSQL = "DELETE FROM ProductTable WHERE ProductId = " + reader["ProductId"].ToString();
SqlCommand cmdDelete = new SqlCommand(strSQL, conn);
cmdDelete.Connection = conn;
cmdDelete.CommandTimeout = 20800;
cmdDelete.ExecuteNonQuery();
}
SqlContext.Pipe.Send(DateTime.Now.ToString() + " - Completed working with ProductTable");
}
finally
{
// Always call Close when done reading.
reader.Close();
}
Ma procédure stockée:
SELECT ProductId FROM ProductTable
WHERE ProductInfoId IN
(
SELECT ProductInfoId from DeletedProducts
)
7 milliards de lignes de la procédure stockée? Donc, vous supprimez 7 milliards de lignes d'une plus grande rangée *** une par une ***? – gbn
Wow c'est pourquoi il y a un A en RBAR. –