![]() |
![]() |
![]() |
|
SQL один запрос на базы на разных серваках. КАК? | ☑ | ||
---|---|---|---|---|
0
Skom
21.07.10
✎
09:19
|
есть необходиомсть сделать запрос сразу к 5-ти базам
это не проблема но беда в том что на ОДНОМ серваке 3 базы и на другом еще 2 вот внутри одного сервера по базам я умею делать запрос а как к нему прицепить запрос для другого сервака? |
|||
1
Skom
21.07.10
✎
09:20
|
например вот
SELECT DISTINCT | ЗАО.ДисконтнаяКарта as ДисконтнаяКарта, | ЗАО.Клиент |FROM | ( | Select | Спр.CODE ДисконтнаяКарта, | Спр.sp36797 Клиент | From | zao_2008..sc36801 as Спр (nolock) | Where | Спр.sp36797 <>'' and | Спр.ID not in ( | select Док.sp39185 | from zao_2008..dh5292 as Док (nolock) | Inner Join zao_2008.._1SJourn as Жур (nolock) on Right(Жур.Date_Time_IDDoc,9) = Док.IDDoc | Where Док.sp39185 <> ' 0 ' And Жур.Date_Time_IDDoc Between '20090101' And '20091231Z' | ) | ) as ЗАО далее джойню таблицы из другой БАЗЫ ДАННЫХ НО!!!! надо получить данные из двух баз (но с другого серверва, сервак виден по локалке) |
|||
2
el-gamberro
21.07.10
✎
09:22
|
sp_addlinkedserver
Либо можешь линковать сервера из SSMS |
|||
3
thargon
21.07.10
✎
09:22
|
И в чем проблема? Это штатная возможность ms sql-я.
|
|||
4
el-gamberro
21.07.10
✎
09:23
|
(3) Возможность штатная, но сервер предварительно надо залинковать.
|
|||
5
Skom
21.07.10
✎
09:24
|
на простом примерчике можете показать как линковать и как в запросе задействовать данную связь.
просто никогда не сталкивался до этого |
|||
6
el-gamberro
21.07.10
✎
09:25
|
(5) http://msdn.microsoft.com/ru-ru/library/ms190479.aspx
Просто в имени таблицы указываешь еще полный путь до нее, относительной той БД из которой делаеться запрос. |
|||
7
Skom
21.07.10
✎
09:27
|
(6) спс. нашел то же самое в БОЛ
пошел пробовать)) если что еще вас подостаю малость |
|||
8
el-gamberro
21.07.10
✎
09:27
|
ТИПА
LEFT JOIN 1csever.tradebase.dbo.payments.iddoc |
|||
9
Skom
21.07.10
✎
09:31
|
(8) о! вот за это спасибо.
я шел в этом направлении но не дошел пока)) |
|||
10
dk
21.07.10
✎
09:31
|
SELECT *
FROM OPENDATASOURCE( 'SQLOLEDB', 'Data Source=srv-term;User ID=sa;Password=***' ).Northwind.dbo.Employees |
|||
11
Skom
21.07.10
✎
09:32
|
а в запросе куда ...в самом начале линковать сервак?
в запросе в (1) куда вставить линк? |
|||
12
el-gamberro
21.07.10
✎
09:33
|
(11) Сервер линкуется один раз, потом еще больше линковать не надо (даже если перезагружал сервер).
Хранимку можно выполнить из SSMS |
|||
13
Nic1
21.07.10
✎
09:38
|
(11) в EM можно вручную прилинковать новый сервер, в ветке Security-Linked Servers.
|
|||
14
Skom
21.07.10
✎
09:38
|
стоп.
если в ЕМ я вижу этот сервер, то он уже прилинкован? |
|||
15
Nic1
21.07.10
✎
09:39
|
(14) он должен быть в списке Linked Servers
|
|||
16
el-gamberro
21.07.10
✎
09:39
|
(14) Нет
|
|||
17
Skom
21.07.10
✎
09:41
|
а провайдера какого ставить при линке?
натив клиента? или оле ДБЦ |
|||
18
Skom
21.07.10
✎
09:41
|
OLE ODBC
|
|||
19
Nic1
21.07.10
✎
09:42
|
(18) SQL Server
|
|||
20
Nic1
21.07.10
✎
09:44
|
можно вроде Microsoft OLE DB Provider for SQL Server, но лучше ставить Server Type - SQL Server.
|
|||
21
Skom
21.07.10
✎
09:44
|
ставлю. в списке таблиц вижу тока системные таблицы сервера
|
|||
22
Nic1
21.07.10
✎
09:45
|
(21) значит прилинкован. Теперь можно запросы пробовать
|
|||
23
Nic1
21.07.10
✎
09:47
|
(22) правда иногла еще приходится ставить одинаковые пароли на учетные записи, по которым линкуешься, если так не прокатит
|
|||
24
Skom
21.07.10
✎
09:50
|
у меня имя сервака как айпи
10.0.0.2 как мне в запросе его использовать???? |
|||
25
rs_trade
21.07.10
✎
09:51
|
(24) погугли на тему linked server
|
|||
26
Nic1
21.07.10
✎
09:52
|
(24) а х.з., можешь прямо так и пробовать, но лучше использовать имя SQL Servera, по имени тоже без проблем обычно линкуется. Т.е, попробуй прилинковаться по имени сервера
|
|||
27
el-gamberro
21.07.10
✎
09:53
|
(24) хз чего там мудрить.
всегда писал в SSMS sp_addlinkedserver 'имясервера' все остальное по умолчани. |
|||
28
Skom
21.07.10
✎
09:53
|
(26) уже перелинковал вроде по скульному имени
|
|||
29
Skom
21.07.10
✎
09:54
|
+28 ха ха
серваки в разных доменах что то не дает подключиться. точнее подключается а к таблицам доступа не видит хотя логин к серваку указал сам (правильный) |
|||
30
Skom
21.07.10
✎
09:56
|
ну оно и верно в подсетках то разных.
по айпи он видит сервак а по ДНС имени не видит |
|||
31
Nic1
21.07.10
✎
09:58
|
(29)
какую ошибку выдает запрос? P.S. я как-то ликновался с локальной машины (которая не была в домене) на сервак в домене по имени, там все нормально было. Только пароли на учетки одинаковые должны быть |
|||
32
Nic1
21.07.10
✎
09:59
|
а системные таблицы то видны?
|
|||
33
Skom
21.07.10
✎
10:06
|
пока писал мессаг - уже разобрался
всем спасибо. возникнут вопросы - добавлю сюда |
|||
34
Skom
21.07.10
✎
10:38
|
select Док.sp39237
from [10.0.0.2].OOO_S.dbo.dh5292 as Док (nolock) Inner Join [10.0.0.2].OOO_S.dbo._1SJourn as Жур (nolock) on Right(Жур.Date_Time_IDDoc,9) = Док.IDDoc Where Док.sp39237 <> ' 0 ' And Жур.Date_Time_IDDoc Between '20090720' And '20100719Z' |
|||
35
Skom
21.07.10
✎
10:38
|
выдает ошибку
Cannot specify an index or locking hint for a remote data source. |
|||
36
Skom
21.07.10
✎
10:39
|
хм. ноулоки убрал считает
|
|||
37
el-gamberro
21.07.10
✎
10:40
|
(36) Для линкованного сервера некоторые фичи недоступны.
|
|||
38
Nic1
21.07.10
✎
10:53
|
(36) nolock там и не будет работать..
|
|||
39
Skom
21.07.10
✎
10:54
|
все. спасибо
проблему решил уже. |
|||
40
UprDem
21.07.10
✎
11:01
|
Кстати. У меня запрос к прилинкованному серверу ну намноооого дольше шёл. (Мне всего пару раз такое надо было). У коллег тоже это есть? Или это моё личное
|
|||
41
Skom
21.07.10
✎
11:04
|
дольше.
мне тоже одноразово надо шефу надо знать какие дисконтные карты не были задействованы за последний год нашло 2600 карт)) а запрос и правда гораздо дольше работает |
|||
42
dk
21.07.10
✎
11:11
|
- доктор. меня все игнорируют!
- следующий --- см. (10) хотя если запросы часто шлешь, то лучше залинковать - можно ведь через меню это 1 раз сделать |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |