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

Откуда:
Сообщений: 8
Всем привет!!!! Есть два сервера: DB-SRV и DB2-SRV. Оба на SQL Server 2008 Есть база Base1, она лежит на сервере DB-SRV, и BASE2, она лежит на сервере DB2-SRV. Создаю запрос на сервере DB-SRV. Нужно из этого запроса обратиться к данным в базе BASE2 сервера DB2-SRV. Делаю вот так:
EXEC sp_addlinkedserver
@server = N'MyServer',
@provider = N'',
@srvproduct = N'N'SQLNCLI',
@datasrc = N'DB2-SRV';
GO

EXEC sp_addlinkedsrvlogin 'MyServer', 'false', 'ИмяВходаНаЛокальныйСервер', 'ЛогинДляВходаНаУдаленныйСервер', 'Пароль';
GO

После этого выполняю запрос к Base2 например:
SELECT *
FROM MyServer.BASE2.dbo.Table1 AS Сотрудники;

Что я делаю не так? Подскажите, пожалуйста.
1 ноя 13, 10:59    [15062988]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Artanov Pavel
Что я делаю не так?

Все так делаете
1 ноя 13, 11:05    [15063025]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
o-o
Guest
Artanov Pavel,

ну а что происходит-то?
ошибку пишет(какую), данные не возвращает или что еще?
1 ноя 13, 11:07    [15063037]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
o-o
Guest
как вариант: если DB2-SRV именованный, то его надо указывать как comp\instance_name
1 ноя 13, 11:15    [15063091]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Artanov Pavel - протестите соединение. Если что не так - будет ошибка.
И приведите оригинальный текст Вашей ошибки.
Ибо гадать можно долго.
1 ноя 13, 11:23    [15063154]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Artanov Pavel
Member

Откуда:
Сообщений: 8
Спасибо большое всем! Пишет ошибку Invalid object name 'MyServer.Base2.dbo.Table1'
1 ноя 13, 11:40    [15063368]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Artanov Pavel
Пишет ошибку Invalid object name 'MyServer.Base2.dbo.Table1'

Значит, такого объекта не существует.
Ваш КО.
1 ноя 13, 11:42    [15063387]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Artanov Pavel
Member

Откуда:
Сообщений: 8
Да я понял, что значит это сообщение. Но на сервере DB2-SRV есть база BASE2, в ней есть схема dbo и есть таблица Table1. Проблема, как я понял, в LinkedServer. Сейчас буду пробовать через comp\instance_name. Но, думаю, это проблемы не решит.
1 ноя 13, 12:00    [15063569]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Artanov Pavel
Но на сервере DB2-SRV есть база BASE2, в ней есть схема dbo и есть таблица Table1.

И запрос

SELECT *
FROM MyServer.BASE2.dbo.sysobjects where name = 'Table1'

тоже с вами согласен ?
1 ноя 13, 12:02    [15063601]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Artanov Pavel
буду пробовать через comp\instance_name.

Так у вас на DB2-SRV именованный экземпляр MSSQL, что ли?
1 ноя 13, 12:05    [15063633]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Artanov Pavel
Member

Откуда:
Сообщений: 8
Гость333
Artanov Pavel
буду пробовать через comp\instance_name.

Так у вас на DB2-SRV именованный экземпляр MSSQL, что ли?


Какой командой SQL узнать, подскажите, пожалуйста.

Делаю так:
select @@servername
go
1 ноя 13, 12:49    [15064079]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Artanov Pavel,

Выполняете эту команду на DB2-SRV? Что возвращает эта команда?
1 ноя 13, 13:01    [15064183]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Artanov Pavel
Member

Откуда:
Сообщений: 8
Гость333,
Возвращает DB2-SRV
1 ноя 13, 13:10    [15064253]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Artanov Pavel
Member

Откуда:
Сообщений: 8
Гость333,
извиняюсь, выполняю эту команду на DB2-SRV
1 ноя 13, 13:16    [15064326]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Artanov Pavel,

Значит, это неименованный экземпляр. Тогда непонятно, как именно вы собрались пробовать comp\instance_name.
1 ноя 13, 13:17    [15064336]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Artanov Pavel
Member

Откуда:
Сообщений: 8
Гость333,
подскажите, пожалуйста, как тогда сделать правильно?
1 ноя 13, 13:23    [15064393]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Artanov Pavel
, пожалуйста, как тогда сделать правильно?

Указать правильное имя таблицы в запросе
1 ноя 13, 13:25    [15064429]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Азагаш
Member

Откуда:
Сообщений: 450
Artanov Pavel,

Попробуйте выполнить

SELECT * 
FROM MyServer.BASE2.dbo.sysobjects


а потом

SELECT * 
FROM MyServer.BASE2.dbo.sysobjects where name = 'Table1'
1 ноя 13, 13:36    [15064526]     Ответить | Цитировать Сообщить модератору
 Re: Как выполнить запрос к другому серверу?  [new]
Artanov Pavel
Member

Откуда:
Сообщений: 8
Всем спасибо. Разобрался. Сам тупил:

EXEC sp_addlinkedserver
@server = N'MyServer',
@provider = N'SQLNCLI',
@srvproduct = N'',
@datasrc = N'db2-srv';
GO

EXEC sp_addlinkedsrvlogin 'MyServer', 'false', 'sa', 'sa', '123';
GO

вместо @srvproduct = N'' писал @srvproduct = N'N'SQLNCLI'
вместо @provider = N'SQLNCLI' писал @provider = N''

Еще раз всем спасибо. Все заработало.
1 ноя 13, 16:16    [15066026]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить