Should I use ExecuteNonQuery for this db backup command

后端 未结 8 983
迷失自我
迷失自我 2021-01-17 03:26

I have a method that allows me to kick off a back up of a data base. What I am wondering is if I should be using ExecuteNonQuery() in this context or if there is something

8条回答
  •  长情又很酷
    2021-01-17 04:30

    To handle the issue of the long running query I ended up going with this:

        public static void RunBackup(string dbName, string filePath, string backupName, string connString)
        {
            string commmandText = "BACKUP DATABASE @DBName TO  DISK = @FilePath WITH NOFORMAT, NOINIT, NAME = @BackUpName, SKIP, NOREWIND, NOUNLOAD,  STATS = 10";
            SqlConnection objConnection = new SqlConnection(connString);
            try
            {
                SqlCommand objCommand = new SqlCommand(commmandText, objConnection);
                objCommand.Parameters.AddWithValue("@dbName", dbName);
                objCommand.Parameters.AddWithValue("@FilePath", filePath);
                objCommand.Parameters.AddWithValue("@BackUpName", backupName);
    
                objConnection.Open();
    
                IAsyncResult result = objCommand.BeginExecuteNonQuery();
                while (!result.IsCompleted)
                {
                    System.Threading.Thread.Sleep(100);
                }
    
    
                int count = objCommand.EndExecuteNonQuery(result);
             }
            catch (SqlException e)
            {
                throw e;
            }
            finally
            {
                objConnection.Close();
    
            }
    
        }
    

    This will allow me to execute the command without asyncronously without timeout issues. I will be adding some additional error handling etc in my final code set. I may do some additional work to see if I can get a better status returned at the end of the script that I can get via EndExecuteNonQuery or through an AsyncCallBack.

提交回复
热议问题