| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Пара интересных кверей |
| Автор: Vit 15.5.2002, 18:28 | ||||||
| Хочу поделится своими изысканиями в закверении MS SQL Server. Вот пример нескольких кверей, которые мне удалось заставить работать:
Здесь прикол в том что меняя значение провайдера, можно использовать в одной квере и таблицу из MS SQL Server и таблицу из любой другой базы данных, которая поддерживается ADO.
Вроде бы ничего такого, только вместо кверения таблицы, кверится другая квери - по сути создается временное View - я давно читал о возможности такого, но у меня не получалось, оказалось, что прикол в том, что выражение as обязательно! Квери через несколько серверов:
Здесь фишка в том что надо указать другой сервер как linked сервер для первого (там в конфигурации это есть) |
| Автор: digital_pilot 1.6.2002, 19:30 |
| наряду с OPENROWSET можно еще использовать OPENDATASOURCE как часть полностью квалифицированного имени таблицы: SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=RemoteServer; User ID=sa;Password=').MyDB.dbo.MyTable Мне приходилось пользоваться такими приколами при перебросе данных с удаленного SQL-сервера на локальный через Connection, открытый на локальном сервере. К сожалению, позже обнаружилось, что в 1 из локальных сеток метод работал только под sa, а под рядовым юзером никак не хотел. После 2-х-недельных мучений пришлось послать все это к чертовой матери |
| Автор: Vit 1.6.2002, 19:46 |
| А под рядовым юзером наверное ".dbo." не уместен, его надо менять на конкретного хозяина объекта, или это тоже не подходит? |
| Автор: Vit 1.6.2002, 19:47 |
| Кстати OPENROWSET имеет и еще один недостаток, нельзя с помощью нее открыть базу данных на том же сервере |
| Автор: digital_pilot 1.6.2002, 21:47 | ||
да нет, в том-то и дело, что там именно dbo и был хозяином... на других сетках все работало, просто на этой какие-то настройки были другие, или еще черт знает что. |
| Автор: Vit 2.6.2002, 00:43 |
| Может fierwall какой стоит, у нас такое было... |
| Автор: digital_pilot 2.6.2002, 03:05 | ||
да там чисто внутри локалки все шло, хрен его знает... я вообще с их сеткой не контачил, это за сотни километров от меня. Мое начальство сказало: "Ни хрена не работает!" |
| Автор: Vit 2.6.2002, 03:19 |
| Классно! Наконец-то в этом разделе появился человек с которым интересно поболтать и который разбирается в базах! Слушай, а в чем недостаток этого способа, я признаться тоже все через Linked сервера делаю, но все-таки, для общего развития? Кстати ты не работал с DTS прицельно? А то у меня есть несколько вопросов. |
| Автор: digital_pilot 7.6.2002, 16:37 | ||
Хм... ну, я так, разбираюсь постольку-поскольку, там немного, здесь чуть чуть... Насчет недостатков OPENDATASOURCE... В общем, в хэлпах пишут нечто вроде того, что в этом случае при каждом вызове этого макроса автоматически каждый раз устанавливается новый коннект, ad hoc connection, как они это зовут. И поэтому рекомендуют использовать этот способ только в тех случаях, когда кросс-серверные операции нужно выполнить всего лишь пару раз. Если же это приходится делать чаще, то рекомендуется наладить linked server. Ну, как я уже упоминал, у самого были какие-то так и не разъясненные проблемы с правами доступа при использовании OPENDATASOURCE. Деталей, у сожалению, уже не помню. Еще имели место проблемы с транзакциями. Когда я в Connection'е, нацеленном на локальный сервер, пытался открыть транзакцию и потом в этой транзакции через OPENDATASOURCE переносить данные с удаленного сервера на локальный, то это на некоторых системах срабатывало, на некоторых же - нет. Такие проблемы я и в ньюз-группах тоже видел, но никто ничего вразумительного сказать так и не смог. Может как-то настроить нужно было чего-нить - но мои многочисленные попытки успехом не увенчались. Так что в этой области у меня пробел Linked server'а же в ситуациях с локальными транзакциями ведут себя вроде бы поприличнее. TRUNCATE TABLE, правда, отроллбэкить не разрешают, но на DELETE / INSERT / UPDATE роллбэк срабатывает нормально. По DTS, к сожалению, ничего сказать не могу, т.к. с этим не работал. Только как юзер с экспорт-импорт-ассистентом в EM |