Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
plz
Guest |
где бы кроме БОЛ почитать про linked servers? вот например не могу понять, как лучше выполнять запрос: select * from ORCL..HR.EMPLOYEES e join ORCL..HR.JOBS j on e.job_id = j.job_id или select * from openquery (ORCL, 'select * from HR.EMPLOYEES e, HR.JOBS j where e.job_id = j.job_id') в примере выше какой сервер будет выполнять соединение, тот, в чьем синтаксице написан запрос, или нет? т.е. вроде по логике, если соединение написано в оракловом стиле или с участием оракловых функций, то и выполнять его может только оракл, ну и обратное верно для SQL Server-a. и тогда вопрос, кого лучше заставлять работать, прилинкованный сервер или свой родной SQL Server? |
31 июл 12, 15:54 [12941749] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37200 |
Какое еще такое соединение с оракла? O_o Соединение всегда будет выполнять MS SQL к серверу, указанному в параметрах подключения линкед-сервера.
Второе лучше, поскольку есть нехилый шанс, что MSSQL сначала перетащит себе обе таблицы, а уже потом будет их соединять. |
||
31 июл 12, 16:09 [12941858] Ответить | Цитировать Сообщить модератору |
plz
Guest |
Гавриленко Сергей Алексеевич, имелось в виду соединение = join, а не соединение в смысле connection. но вы уже и ответили, что в случае openquery соединение(join) выполнит оракл, а во втором случае "есть нехилый шанс, что MSSQL сначала перетащит себе обе таблицы, а уже потом будет их соединять" |
31 июл 12, 16:26 [12942012] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37200 |
Сообщение было отредактировано: 31 июл 12, 16:28 |
||
31 июл 12, 16:27 [12942027] Ответить | Цитировать Сообщить модератору |
plz
Guest |
блин, ну вроде "если соединение написано в оракловом стиле или с участием оракловых функций" подразумевало перечисление таблиц через запятую, со звездями на полях если соединение внешнее ![]() а для плана запроса надо бы еще иметь SHOWPLAN, как раз этого у меня нет. linked servers тоже созданы не мной, так что у меня даже не хватает сведений, чтоб их тут дать, чтобы все мои непонятки спросить. например еще имеется linked server к DB2, в скрипте вот это:
соединяется 1 раз из 10 попыток, когда не может соединиться, пишет вот такое: OLE DB provider "MSDASQL" for linked server "DB2SRVR" returned message "[Microsoft][ODBC Driver Manager] Invalid connection string attribute". OLE DB provider "MSDASQL" for linked server "DB2SRVR" returned message "[Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed". OLE DB provider "MSDASQL" for linked server "DB2SRVR" returned message "[IBM][CLI Driver] SQL30081N A communication error has been detected. Communication protocol being used: "TCP/IP". Communication API being used: "SOCKETS". Location where the error was detected: "10.182.242.134". Communication function detecting the error: "recv". Protocol specific error code(s): "10054", "*", "0". SQLSTATE=08001 ". Msg 7303, Level 16, State 1, Line 1 Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "DB2SRVR". не подскажете ли, это вообще на чьей стороне ошибка: DB2, SQLServer или вообще это дело в сети? судя по гуглу, это все же DB2, но вдруг кто тут на форуме знает... |
|
31 июл 12, 16:41 [12942131] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |