2009-08-23 3 views
0

У меня есть таблицы и много sotred процедуры, которые работают с базой данных sql.
В демонстрационных целях я хочу загрузить данные в память (может быть, набор данных, который я смогу хранить в сеансе), демонстрация ограничена, поэтому кепка памяти сервера не будет проблемой?) Из моих таблиц sql и манипулировать ею с моими хранимыми процедурами ,Манипулировать данными SQL в памяти?

Возможно ли это? Или мне нужно переписать все мои хранимые процедуры или даже заменить их кодом, который работает с набором данных?

ответ

0

Если вы хотите, чтобы SQL Server управлял вашей таблицей в памяти, нет надежного способа.

Вы можете создать переменную таблицы и заполнить ее набором данных, и она, вероятно, будет сохранена в памяти.

Проверить этот ответ для получения дополнительной информации:

Does MS-SQL support in-memory tables?

Aditionally, с некоторой конфигурацией сервера вы можете быть в состоянии поставить TempDB в псевдодиск, который будет эффективно дать вам свободу действий, чтобы работать не только с таблицей переменные и надежда, но вы можете хранить свой набор данных во временной таблице и быть уверенным, что он будет в ОЗУ. Проверьте статью этой компании Microsoft:

http://support.microsoft.com/?scid=kb;en-us;917047&x=17&y=9

EDIT: Я бы ожидать, что если набор данных помещается в памяти сервера (и их сконфигурировано за предел процесса) он будет храниться в памяти сервера. Но это всего лишь образованное предположение, поскольку я не знаком с архитектурой ASP.NET.

+0

Это не обязательно в памяти SQL-сервера, а в памяти сервера ASP. Я просто хочу прочитать исходные данные из sql, заполнить таблицы памяти, такие как набор данных, и манипулировать им, но я хочу манипулировать им существующей хранимой процедурой. Если это невозможно, что я могу сделать, чтобы избежать переписывания всех процедур магазина? – 2009-08-23 21:50:49

+0

@lupital Проблема заключается в том, что набор данных находится в памяти asp.net, а не в сервере sql, поэтому теперь вам придется переносить данные на сервер sql и из него, чтобы манипулировать им. Предполагая, что вы имеете в виду класс DataSet .net? –

+0

@KeeperOfTheSoul, мне нужно передать данные с сервера sql только после первоначального набора данных. все манипуляции будут в наборе данных. когда сессия закончится, набор данных также исчезнет. – 2009-08-24 06:03:46

0

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

Его абсолютно невозможно, чтобы SQL Server манипулировал вашей памятью процесса, где находятся наборы данных ADO.Net, посредством процедур Transact-SQL или любой другой технологии. Вам придется переписать все свои процедуры как методы CLR в приложении ASP.Net для работы с наборами данных ADO.Net.

+0

Можете ли вы на самом деле сделать это на практике с SQL Server? (Делайте целые базы данных в памяти) –

+0

Если база данных вписывается в память, уверен, что SQL Server будет загружать каждую страницу, будет ударяться и никогда не выселять их. –

+0

«Храните копию базы данных для каждой сессии» будет для меня. Хо, это можно сделать? любая онлайн-документация? – 2009-08-24 05:45:28

0

Вы рассматривали встроенную базу данных, такую ​​как SQLite? Посмотрите my answer на эту нить SO. Существуют и другие альтернативы.

1

Хранимые процедуры хранятся в базе данных. Невозможно сделать один из них, полностью на сервере БД, работать с некоторой структурой в памяти на веб-сервере - совершенно другое место!

То, что вы просите сделать, это немного похоже на то, что вы заказали пиццу, и теперь, когда она была доставлена ​​в ваш дом, вы хотите, чтобы пиццерия переключила кору на лету, без пиццы, выходящей из вашей дом. Без какой-либо серьезной передовой технологии, которая может выборочно искажать пространственно-временный континуум и, возможно, даже влиять на временное перемещение, этого никогда не произойдет.

Если вы должны изменить пиццу, когда она находится у вас дома, вам либо нужно заказать новую, либо изменить ее самостоятельно с помощью ваших собственных инструментов.

+1

но ... но я * хочу * новая кора :( – Fionnuala

0

Как факт, вы можете это сделать. Это глупо, но возможно.

  1. Вы загружаете все таблицы с SQL-сервера в приложение.
  2. Создайте XML-документ, содержащий данные.
  3. Отправить XML в SQL хранимой процедуры (вы должны создать новые) и обработать его

Говоря о пицц, это как заказать все возможные компоненты, которые должны быть отправлены из Domino в ваш дом, вы открываете все ящики , переупорядочивайте их, а затем отправляйте обратно в Domino, чтобы сделать вас пиццей, которую вы хотите.

Удача: D

Смежные вопросы