Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите решить проблему с доступом к данным  [new]
Forus
Guest
Имеются несколько таблиц с архивными данными(количество не ограничено), причем они создаются dbo
имеется таблица, в которой записано в какой таблице (ее имя) за какой период дат хранятся данные (начальная и конечная)

Пользователям запрещен прямой доступ к таблица, поэтому использование динамического запроса не приемлимо.
как можно получить данные за определенный период из этих таблиц
28 сен 04, 14:35    [993197]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить проблему с доступом к данным  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Создать на основе этих таблиц секционированное представление. См. BOL:Partitioned View
28 сен 04, 14:47    [993258]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить проблему с доступом к данным  [new]
Forus
Guest
такой подход не пойдет.
таблицы большого объема и хотелозь бы делать выборку только из таблиц диапазона дат
28 сен 04, 14:57    [993307]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить проблему с доступом к данным  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Forus
такой подход не пойдет.
таблицы большого объема и хотелозь бы делать выборку только из таблиц диапазона дат


Я же не зря вас к BOL отослал:

Partitioned views allow the data in a large table to be split into smaller member tables. The data is partitioned between the member tables based on ranges of data values in one of the columns. The data ranges for each member table are defined in a CHECK constraint specified on the partitioning column. A view that uses UNION ALL to combine selects of all the member tables into a single result set is then defined. When SELECT statements referencing the view specify a search condition on the partition column, the query optimizer uses the CHECK constraint definitions to determine which member table contains the rows.
28 сен 04, 15:35    [993528]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить проблему с доступом к данным  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
Имеются несколько таблиц с архивными данными(количество не ограничено)
Эти таблицы создаются "автоматически" или "руцями"?

имеется таблица, в которой записано в какой таблице (ее имя) за какой период дат хранятся данные (начальная и конечная)
Запись сюда производится автоматически или "руцями"?

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

Ну, а что мешает в ХП собрать нужные данные, использую прямую адресацию к тем нескольким таблицам?
Если же таблицы и записи о них делаются "автоматически", то в том коде, что их делает, можно же и ХП подправить?
28 сен 04, 16:25    [993757]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить проблему с доступом к данным  [new]
Forus
Guest
таблицы формируются автоматически

при выборе данных из архива не хотелось бы получать данные путем простого JOIN таблиц (если использовать автоматически подготовленную XP)
28 сен 04, 19:18    [994355]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить проблему с доступом к данным  [new]
Forus
Guest
данные пользователям необходимы только из части таблиц (за определенный интервал дат)
28 сен 04, 19:21    [994363]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить проблему с доступом к данным  [new]
Glory
Member

Откуда:
Сообщений: 104760
Еще раз обращу ваше внимание на цитату, приведенную pkarklin-ом
28 сен 04, 19:23    [994367]     Ответить | Цитировать Сообщить модератору
 Re: Помогите решить проблему с доступом к данным  [new]
LR
Member

Откуда: 8P8C
Сообщений: 2423
при выборе данных из архива не хотелось бы получать данные путем простого JOIN таблиц
Так собирайте нужные данные сначала во временную таблицу, используя конструкцию типа
if нужный_период пересекается с периодом tableX
begin
   ...собираем данные из таблицы tableX
end
...
if нужный_период пересекается с периодом tableY
begin
   ...собираем данные из таблицы tableY
end

P.S: Я бы на Вашем месте прислушался к советам pkarklin и Glory - они плохого не посоветуют :-)
Partitioned views тоже ведь можно альтерить из кода...
29 сен 04, 11:04    [995352]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить