Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Динамические запросы в 2005  [new]
Gary
Member

Откуда: Святая Земля
Сообщений: 110
Может, кто в курсе, содержит ли Юкон (2005) что-нибудь вместо sp_executesql.
То есть, можно ли написать что-то вроде:

CREATE PROCEDURE RunSQL
(
@tbl sysname
)
AS
BEGIN
SELECT * FROM @tbl
END
7 апр 05, 15:16    [1449128]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
То есть, можно ли написать что-то вроде:
А как же быть тогда с этим

declare @tbl table (f1 int)
SELECT * FROM @tbl

Как различить ?
7 апр 05, 15:22    [1449155]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Gary
Member

Откуда: Святая Земля
Сообщений: 110
Не совсем...
Проблема такова:
1. Коннект из аппликации проходит всегда к одной и той же базе.
2. Некоторые таблицы находятся в другой базе, инсталлированной позже, и в другом месте.

Нужен динамический redirect.
Дело в том, что компьютер А (клиент) имеет доступ только к компьютеру В (первая база), а нужные ему данные сидят на компьютере С (вторая база), причем В и С видят друг друга по VPN (А в интернете).
Сегодня я делаю динамический sql, вызываю его параметризованным - куча головной боли...
А иногда еще и писать надо, не только читать...

Поэтому в приведенном примере идеальным было бы передача имени сервера и имени базы как параметра - структура известна.
7 апр 05, 15:36    [1449224]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
Поэтому в приведенном примере идеальным было бы передача имени сервера и имени базы как параметра - структура известна.
По-моему все, что вам нужно - это один раз настроить linked server
7 апр 05, 15:44    [1449253]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Gary
Member

Откуда: Святая Земля
Сообщений: 110
Это не помогает - ИМЯ сервера я знаю только в момент запуска процедуры.
А кроме того, их (серверов) есть несколько, и BL (business logic) решает, куда податься. Как пример, выбирается сервер, на котором сейчас рабочее время (изменение данных вызывает сообщение в одну из аппликаций на десктопе администратора, подключенного к этому серверу)

А linked servers у меня есть :-) - для репликации
7 апр 05, 15:59    [1449324]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
Это не помогает - ИМЯ сервера я знаю только в момент запуска процедуры.
И это мешает вам создать linked server с постоянным именем но разным источником ?
7 апр 05, 16:01    [1449338]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Gary
Member

Откуда: Святая Земля
Сообщений: 110
О!
А вот это уже идея!
Как я раньше не догадался :-(
То есть, Вы предлагаете каждый раз строить linked server, а потом вызывать его?

Но, тем не менее, как насчет сабжа? :-))))
7 апр 05, 16:21    [1449426]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
То есть, Вы предлагаете каждый раз строить linked server, а потом вызывать его?
Ну раз у вас такая система доступа к данным то что же делать
Могу предложить пересмотреть всю систему. Ибо динамика и постоянная смена источника данных на мой взгляд говорят о промохах в проектировании.

Но, тем не менее, как насчет сабжа? :-))))
как насчет моего вопроса - "Как различить"
7 апр 05, 16:39    [1449514]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Gary
Member

Откуда: Святая Земля
Сообщений: 110
По поводу дизайна: описываю процесс

Имеем клиента, сидящего в Интернете и покупающего/продающего валюту через сайт банка (форекс)
Его просьба записывается как request в базу данных. Запись толкает аппликацию в "dealing room" в банке у брокера, который работает с данным клиентом. Брокер разрешает/запрещает покупку, и ответ уходит обратно.
Но!
Так как банки не работают 24 часа, они "передают" своих клиентов от одного к другому. То есть, клиент сидит в Чикаго. там ночь. Его сервер определил, что сейчас работает отделение в Сингапуре, и переправляет запрос туда. А там брокер... ну, это Вы уже слышали. Так вот, чикагский клиент работает только со своей базой, про другие и не подозревает. Более того, прокси передает его как "анонымоус".
И как вы предлагаете перенаправлять вызовы в stored procedure, чтобы это было прозрачно всем?
Для справки. У одного из наших клиентов сейчас около 30 отделений, и их можно динамически добавлять...
Спасибо за участие в обсуждении, вернусь в воскресение - у нас суббота, знаете ли :-)
7 апр 05, 18:07    [1450024]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Glory
Member

Откуда:
Сообщений: 104760
Для таких вещей имхо пишутся трехзвенки
7 апр 05, 18:13    [1450053]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
Алексей Ельцов
Member

Откуда: Redmond
Сообщений: 252
Gary

И как вы предлагаете перенаправлять вызовы в stored procedure, чтобы это было прозрачно всем?


Посмотри на Service Broker в SQL Server 2005. Эта служба гарантированной передачи сообщений между SQL Server-ами.
8 апр 05, 21:26    [1454010]     Ответить | Цитировать Сообщить модератору
 Re: Динамические запросы в 2005  [new]
bantik
Member

Откуда:
Сообщений: 374
А чего ты страдаешь то ? Есть такая команда и в Yukon

Executes a Transact-SQL statement or batch that can be reused many times, or that has been built dynamically. The Transact-SQL statement or batch can contain embedded parameters.


sp_executesql [@stmt=] stmt
[
{, [@params=] N'@parameter_name data_type [ [ OUT [ PUT ][,...n]' }
{, [@param1 =] 'value1' [,...n] }
]
19 апр 05, 10:13    [1478286]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить