2010-01-10 3 views
2

Я хочу загрузить всю базу данных (SQL Server) У меня есть набор данных, чтобы я мог работать с несколькими таблицами и их отношениями. Я знаю, что это может быть неодобрительно, но как я могу это сделать (я буду использовать объекты DataRelation и Table)?Как загрузить базу данных SQL Server в набор данных?

Благодаря

+2

Зачем вам это нужно? : P –

+1

Не знаете, почему вы хотите это сделать, но я перебираю список таблиц и заполняю DataTable содержимым. Я также ожидаю, что у вас закончится память. – 2010-01-10 16:09:10

+0

Бегает и прячется под скалой. – Hogan

ответ

0
  1. Читать некоторые статьи о в базе данных памяти.

  2. @ Идея Рэндолфа Поттера - вариант - вы можете получить список таблиц с сервера, а затем перебрать в списке и загрузить все таблицы. Я думаю, вы можете сделать то же самое о FK и отношениях.

  3. Возможно, вы можете сделать это автоматически с помощью конструктора - с помощью перетаскивания из проводника сервера в набор данных (VS2008) и с небольшим кодом загрузите всю вещь в память.

+0

Я спросил, как вопрос возник из-за этого: http://www.knowdotnet.com/articles/datarelation.html Я думаю, я могу перебирать таблицы, а затем загружать их/использовать их. DataTable с именем, аналогичным таблице в db после подключения, должен быть живым экземпляром этой таблицы. – dotnetdev

+0

Кроме того, если я собираюсь работать с двумя столами или более, я могу это сделать: http://www.eggheadcafe.com/community/aspnet/2/10110718/how-to-load-data-from-dat. aspx, но запускаем метод n раз для n таблиц (в цикле или что-то еще). – dotnetdev

1

Если я что-то не хватает, это должен быть простой случай создания набора данных, а затем изменения методов заполнения, чтобы удалить часть WHERE. Затем убедитесь, что вы вызываете заполнение в правильном порядке (мастер, а затем детали), чтобы обеспечить сохранение ссылочной целостности.

+0

Любой пример того, как это сделать? – dotnetdev

0

Я полагаю, вы могли бы сделать несколько выборок в рамках одной хранимой процедуры, а затем заполнить набор данных.

using (SqlConnection conn = new SqlConnection("YourConnectionString")) 
    { 
     using (SqlDataAdapter command = new SqlDataAdapter("usp_YourStoredProcedure", conn)) 
     { 
      command.CommandType = CommandType.StoredProcedure; 
      conn.Open(); 

      DataSet ds = new DataSet(); 
      command.Fill(ds); 
     } 
    } 

Я согласен с другими комментариями здесь, что, если ваша база данных не крошечная, это действительно плохая идея.

0

Вы можете запустить это ... но не ожидайте, что после него будет сервер db или app.

using (SqlConnection conn = new SqlConnection("YourConnectionString")) 
    { 
     using (SqlCommand command = new SqlCommand("exec sp_msforeachtable 'select * FROM ?'", conn)) 
     { 
      conn.Open(); 

      DataSet ds = new DataSet(); 
      command.Fill(ds); 
     } 
    } 
Смежные вопросы