I'm given the task to export the content of a huge table from a production database and to import the data into a database at a remote location.

The Table has about 45,000,000 rows. using about 4 GB space in the database.

Its 10 Columns are of type int, datetime and varchar(n) &lt;= 255, but some of the varchar fields contain newlines and the usual field separators used by bulkcopy.

I guess export to Excel is no option due to the number of rows.
Export with SSIS to Flatfile is possible (took about 30 minutes), but reimport is not automatic, since some fields where spitted.

My current idea is


create a new database on the production server (using same
collations as the production database)
Set its recovery mode to simple
copy the data with
Select * into copy_of_table from prod_db..big_table
Detach mdf file from this new database and ship it to the other
location
Drop adhoc database


I assume that inserting into a database with simple recovery model generates only minimal logging on the new database and this way is one of the fastest possible to export the data and the impact to the production database is the least possible.


Question: MVC3 Actionlink with submit
Answer: Because you say you are new right off the bat I'm going to tell you that the way you are going about this is not the best way to achieve what you are trying to achieve.

Putting a submit button at the bottom of the form will get the data to post and bind to Product if you change the top of the form to 

@using (Html.BeginForm("AddToCart", "WHATEVERYOURCONTROLLERISCALLED"))


but I think you are missing a few key points here.

There are some conventions that you seem to be ignoring

ShoppingCart.cs should be named ShoppingCartController.cs and appear in the controllers folder of your project

Instead of naming each price on the model you can use a list of prices options and display them on the form as a series of radio buttons while putting the mutually exclusive choice. for example.

The Model

public class Product{

// remove all the different price properties. 

// other properties go here...And while you are at it Use Pascal case for property names Eg. displaySize would be DisplaySize but I guess that is up to you.

[Required]
public string PriceChoice { get; set; }

}


The Controller

public class ShoppingCartController : Controller
{

public ActionResult Details(int productId)
{
   // get the product from the database
    var model = Database.GetProductById(productId);

   // set a default if you want
   model.PriceChoice = "a";

    return View(model);
}

[HttpPost]
public ActionResult AddToCart(Product model)
{
    // do whatever you need to do

    return RedirectToAction("Details", new { id = model.Id });
}
}


The View

 @using (Html.BeginForm())
{
&lt;div&gt;A: @Html.RadioButtonFor(x =&gt; x.PriceChoice , "a")&lt;/div&gt;
&lt;div&gt;B: @Html.RadioButtonFor(x =&gt; x.PriceChoice , "b")&lt;/div&gt;
@Html.ValidationMessageFor(x =&gt; x.PriceChoice )
&lt;input type="submit" value="OK" /&gt;
}


Now that's all very abridged and basic so I hope you get the gist of it.

Also you'll find some value in reading this Post Redirect Get So while it doesn't strictly apply to what you are doing it will explain the structure of the code you are reading in the examples where you see RedirectToAction.

Now if you want to do this really cleverly you will have to learn some javascript and issue an Ajax command.

Hope this helps