2) нет такой функции. Нужно связать таблицы и по строчке master-таблицы выуживать строчки detail-таблиц. Только так. Эта задача должна решаться на стороне СУБД, а не на клиенте. Ну или идти по связям, последовательно выполняя метод Select для каждой таблицы. Пробовал Select к DataSet применить - что-то тогда у меня не заработало, либо нельзя его к DataSet применять...
1) Виснет он потому, что при столь частом добавлении таблица постоянно залочена сервером. Это даже класс исключения подтверждает - ошибка вне проги. Что делать в данном случае...
а) можно создать хранимую процедуру или представление на таблицу и поручить разруливать операции добавления в таблицу и обновления представления СУБД (не уверен, пройдёт ли такой номер). Кстати, записи из таблицы удаляются с такой же скоростью? Иначе буквально через пару часов работы машина умрёт смертью храбрых в попытках обработать твои данные.
б) (развитие а) можно создать 2 таблицы, где в одну идет добавление со страшной скоростью, а во вторую копируются данные большими блоками и значительно реже (скажем, раз в 10-30 секунд), тогда DataGrid ассоциировать со второй таблицей, а синхронизацию поручить хранимой процедуре, которую пускать по таймеру. Можно сделать представление, которое обновляется по таймеру тоже значительно реже, чем главная таблица. (По сути,
DM это же самое предложил)
И вообще, не много ли хочешь от DataGird?