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

Откуда:
Сообщений: 500
Есть вот такой запрос:
select * from [table1].[dbo].Dok_arch where ([table1].[dbo].dok_arch.net=1) and ([table1].[dbo].dok_arch.un<>0)
and not exists
(select * from [table2].[dbo].dok_arch where [table2].[dbo].dok_arch.un=[table1].[dbo].dok_arch.un)

Запрос выбиреат записи из одной базы с признаком net=1, те которых нет в другой базе
Только теперь таблица table2 переехала на другой сервер.
Как исправить запрос, чтобы сравнивались данные двух таблиц, находящиеся на разных серверах?
20 фев 12, 12:12    [12121228]     Ответить | Цитировать Сообщить модератору
 Re: 2 сервера в одном запросе  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
[имя сервера].[имя базы].[имя схемы].[имя таблицы] AS [псевдоним]

Сообщение было отредактировано: 20 фев 12, 12:22
20 фев 12, 12:21    [12121329]     Ответить | Цитировать Сообщить модератору
 Re: 2 сервера в одном запросе  [new]
lenash
Member

Откуда:
Сообщений: 500
сделала так:
select * from [table1].[dbo].Dok_arch where ([table1].[dbo].dok_arch.net=1) and ([table1].[dbo].dok_arch.un<>0)
and not exists
(select * from [server2].[table2].[dbo].dok_arch as S1 where S1.un=[table1].[dbo].dok_arch.un)

А он:
Could not find server 'server2' in sysservers. Execute sp_addlinkedserver to add the server to sysservers.

Как сделать это сделать?
20 фев 12, 12:54    [12121696]     Ответить | Цитировать Сообщить модератору
 Re: 2 сервера в одном запросе  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5126
lenash
Как сделать это сделать?

прилинковать server2
20 фев 12, 12:58    [12121741]     Ответить | Цитировать Сообщить модератору
 Re: 2 сервера в одном запросе  [new]
Титунин Петр
Member

Откуда:
Сообщений: 25
тут сам возился и для своих написал инструкцию. И
/* Подключение к удален серверу
1. Пуск-...Прог-SQL….-Средства настройки-“Настройка контак зоны Sql..”.
Пункт Настройка контактной зоны для служб и соединений. Разверните экземпляр SQLEXPRESS, ‘+’
Database, строкой ниже –“Удаленные соединения”.
Локальные и Удаленные соединения, с использов.TCP/IP только, Применить и ОК и закройте инструмент
2. Настройка на прослушивание определенного порта. Пуск-Прогр-SQL….-Средства настройки- “SQL Server Configuration Manager”
(==Настройка контактной зоны SQL сервер). Щелкните на экземпляре сервера SQLEXPRESS,
2 раза мышкой Сетевая конфигурация и ниже Протоколы для SQLExpress.
В правом окне на TCP IP. В новом маленьком окне на IP-адреса Уходим вниз на IP ALL TCP порт = 1433. Применить и ОК. Перезапустить службу или Перезагрузить сервер.
3. В брандмауэре Windows поставить доступ к порту 1433
4. НА стороне клиента. Запускаем SQL_Serv_Manag.._studio_express. Тип сервера - Database Engine;
Имя сервера по формату TCP:sasa\SQLEXPRESS,1500 или TCP:192.168.1.1\SQLEXPRESS,1433
или TCP:192.168.72.50,1433
(Подключение из Командного окна = SQLCMD –s TCP:192.168.1.1\SQLEXPRESS,1433 quit)
*/


/* Обьявление 2-го сервера как ServKL
sp_AddLinkedServer N'ServKL', ' ', N'SQLNCLI',N'TCP:192.168.1.1,1433'

*/

и еще. в management после подключение сделайте любой запрос select * from ServKL.dbo.tabl_nn, если он идет, то пойдет и программно
20 фев 12, 14:37    [12122971]     Ответить | Цитировать Сообщить модератору
 Re: 2 сервера в одном запросе  [new]
Титунин Петр
Member

Откуда:
Сообщений: 25
брандмауэре Windows - эта штука чаще всего отключена и тогда ее не трогаем
20 фев 12, 14:39    [12122985]     Ответить | Цитировать Сообщить модератору
 Re: 2 сервера в одном запросе  [new]
Титунин Петр
Member

Откуда:
Сообщений: 25
Можно я сам задам вопрос о псевдонимах сервера.
Работая с sql 2005 и 2008 обьявил удаленный сервер следующей командой
sp_AddLinkedServer N'ServKL', ' ', N'SQLNCLI',N'TCP:192.168.1.1,1433'
Все работало.

Пришлось перейти на sql2000, а там она не работала, либо работала не устройчиво.
Поставщик SQLNCLI, вроде как не задуман для 2000.

Разово вручную подключили Связанный сервер, но эффективным оказался вариант когда
Связанный сервер TCP:192.168.1.1,1433, а тип сервера = "Сервер SQL Server". (а на поставщика услуг уже не выходим)
В результате в программе пришлось писать некрасивые команды
select * from [192.168.1.1].slink.dbo.TabFrom

но tcp адрес может меняться.

Псевдонимы вроде задал в (Диспетчере конфигурации) на клиентской машине, но толку нет.
В инструкциях по псевдонимам - как в расказах о сипульках и сипулькериях, здорово и не понятно.

Вопрос, на какой участок обратить внимание. Что пропустил?
24 фев 12, 08:56    [12144887]     Ответить | Цитировать Сообщить модератору
 Re: 2 сервера в одном запросе  [new]
Титунин Петр
Member

Откуда:
Сообщений: 25
Ситуация хуже.
два SQL установлено 2000 и 2008 на клиентской машине.
Не обратил внимание, что из под 2008 легко подключается к 2000 (режим Связанный сервер) (несколько вариантов работают).
А вот из под 2000 к 2000 не могу подобрать режима.
Попробую проинсталлировать др.версию 2000
24 фев 12, 11:27    [12145630]     Ответить | Цитировать Сообщить модератору
 Re: 2 сервера в одном запросе  [new]
Титунин Петр
Member

Откуда:
Сообщений: 25
Если кому будет еще интересно.
В более новом sql 2000 оказался в наличии Client Network Utility (до этого у меня не было)
В нем ввожу псевдоним ServKL TcpIp и сетевой адрес
После этого создаю связанный сервер и с ним славно все работает.
27 фев 12, 09:37    [12154928]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить