Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пара интересных кверей 
:(
    Опции темы
Vit
Дата 15.5.2002, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Хочу поделится своими изысканиями в закверении MS SQL Server.

Вот пример нескольких кверей, которые мне удалось заставить работать:

SQL
SELECT * From
OpenRowSet
( 'SQLOLEDB','MyServer';'SA';'', MyDatabase.dbo.MyTable)


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

SQL
SELECT * FROM (Select * From MyTable) AS Mt


Вроде бы ничего такого, только вместо кверения таблицы, кверится другая квери - по сути создается временное View - я давно читал о возможности такого, но у меня не получалось, оказалось, что прикол в том, что выражение as обязательно!

Квери через несколько серверов:
SQL
SELECT * From MyServer.MyDatabase.dbo.mytable

Здесь фишка в том что надо указать другой сервер как linked сервер для первого (там в конфигурации это есть)




--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
digital_pilot
Дата 1.6.2002, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.6.2002

Репутация: нет
Всего: нет



наряду с OPENROWSET можно еще использовать OPENDATASOURCE как часть полностью квалифицированного имени таблицы:

SELECT * FROM OPENDATASOURCE('SQLOLEDB','Data Source=RemoteServer; User ID=sa;Password=').MyDB.dbo.MyTable

Мне приходилось пользоваться такими приколами при перебросе данных с удаленного SQL-сервера на локальный через Connection, открытый на локальном сервере. К сожалению, позже обнаружилось, что в 1 из локальных сеток метод работал только под sa, а под рядовым юзером никак не хотел. После 2-х-недельных мучений пришлось послать все это к чертовой матери :D  и воспользоваться linked server'ом - тут все работает как по маслу
PM MAIL   Вверх
Vit
Дата 1.6.2002, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



А под рядовым юзером наверное ".dbo." не уместен, его надо менять на конкретного хозяина объекта, или это тоже не подходит?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Vit
Дата 1.6.2002, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Кстати OPENROWSET имеет и еще один недостаток, нельзя с помощью нее открыть базу данных на том же сервере :(


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
digital_pilot
Дата 1.6.2002, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.6.2002

Репутация: нет
Всего: нет



Цитата(Vit @ 01.6.2002, 20:46)
А под рядовым юзером наверное ".dbo." не уместен, его надо менять на конкретного хозяина объекта, или это тоже не подходит?

да нет, в том-то и дело, что там именно dbo и был хозяином... на других сетках все работало, просто на этой какие-то настройки были другие, или еще черт знает что.
PM MAIL   Вверх
Vit
Дата 2.6.2002, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Может fierwall какой стоит, у нас такое было...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
digital_pilot
Дата 2.6.2002, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.6.2002

Репутация: нет
Всего: нет



Цитата(Vit @ 02.6.2002, 01:43)
Может fierwall какой стоит, у нас такое было...

да там чисто внутри локалки все шло, хрен его знает... я вообще с их сеткой не контачил, это за сотни километров от меня. Мое начальство сказало: "Ни хрена не работает!" :0  Ну вот и пришлось в спешном порядке переделывать все на linked server, тем более что я, копаясь в доках и ньюс-группах, где-то наткнулся на то, что OPENDATASOURCE не самый 100%-но замечательный и работоспособный способ  :)
PM MAIL   Вверх
Vit
Дата 2.6.2002, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Классно! Наконец-то в этом разделе появился человек с которым интересно поболтать и который разбирается в базах! Слушай, а в чем недостаток этого способа, я признаться тоже все через Linked сервера делаю, но все-таки, для общего развития? Кстати ты не работал с DTS прицельно? А то у меня есть несколько вопросов.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
digital_pilot
Дата 7.6.2002, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 1.6.2002

Репутация: нет
Всего: нет



Цитата(Vit @ 02.6.2002, 04:19)
Классно! Наконец-то в этом разделе появился человек с которым интересно поболтать и который разбирается в базах! Слушай, а в чем недостаток этого способа, я признаться тоже все через Linked сервера делаю, но все-таки, для общего развития? Кстати ты не работал с DTS прицельно? А то у меня есть несколько вопросов.

Хм... ну, я так, разбираюсь постольку-поскольку, там немного, здесь чуть чуть... :D

Насчет недостатков OPENDATASOURCE... В общем, в хэлпах пишут нечто вроде того, что в этом случае при каждом вызове этого макроса автоматически каждый раз устанавливается новый коннект, ad hoc connection, как они это зовут. И поэтому рекомендуют использовать этот способ только в тех случаях, когда кросс-серверные операции нужно выполнить всего лишь пару раз. Если же это приходится делать чаще, то рекомендуется наладить linked server.

Ну, как я уже упоминал, у самого были какие-то так и не разъясненные проблемы с правами доступа при использовании OPENDATASOURCE. Деталей, у сожалению, уже не помню.

Еще имели место проблемы с транзакциями. Когда я в Connection'е, нацеленном на локальный сервер, пытался открыть транзакцию и потом в этой транзакции через OPENDATASOURCE переносить данные с удаленного сервера на локальный, то это на некоторых системах срабатывало, на некоторых же - нет. Такие проблемы я и в ньюз-группах тоже видел, но никто ничего вразумительного сказать так и не смог. Может как-то настроить нужно было чего-нить - но мои многочисленные попытки успехом не увенчались. Так что в этой области у меня пробел :D

Linked server'а же в ситуациях с локальными транзакциями ведут себя вроде бы поприличнее. TRUNCATE TABLE, правда, отроллбэкить не разрешают, но на DELETE / INSERT / UPDATE роллбэк срабатывает нормально.

По DTS, к сожалению, ничего сказать не могу, т.к. с этим не работал. Только как юзер с экспорт-импорт-ассистентом в EM  :hehe
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0479 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.