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

Можно ли указать при создании linked server на другой MSSQL-инстанс название базы данных (т.е. чтобы при обращению к линку сразу же были доступны объекты выбранной базы)?
13 окт 14, 14:29    [16696883]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
msLex
Member

Откуда:
Сообщений: 8158
free_blocks
Добрый день!

Можно ли указать при создании linked server на другой MSSQL-инстанс название базы данных (т.е. чтобы при обращению к линку сразу же были доступны объекты выбранной базы)?

Нет, конечно, это же linked server, а не база
13 окт 14, 14:31    [16696897]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
Glory
Member

Откуда:
Сообщений: 104760
[ @catalog = ] 'catalog'
Is the catalog to be used when a connection is made to the OLE DB provider. catalog is sysname, with a default of NULL. catalog is passed as the DBPROP_INIT_CATALOG property to initialize the OLE DB provider. When the linked server is defined against an instance of SQL Server, catalog refers to the default database to which the linked server is mapped.
13 окт 14, 14:34    [16696930]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
free_blocks
Guest
Glory
[ @catalog = ] 'catalog'
Is the catalog to be used when a connection is made to the OLE DB provider. catalog is sysname, with a default of NULL. catalog is passed as the DBPROP_INIT_CATALOG property to initialize the OLE DB provider. When the linked server is defined against an instance of SQL Server, catalog refers to the default database to which the linked server is mapped.


Ага, я это использовал. Но когда получил следующую ошибку, написал сюда.


Msg 15428, Level 16, State 1, Procedure sp_addlinkedserver, Line 37
You cannot specify a provider or any properties for product 'SQL Server'.
13 окт 14, 14:52    [16697115]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
Glory
Member

Откуда:
Сообщений: 104760
free_blocks
Ага, я это использовал. Но когда получил следующую ошибку, написал сюда.

И какие же еще пареметры вы задали ?
13 окт 14, 14:56    [16697142]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
free_blocks
Guest
Glory
free_blocks
Ага, я это использовал. Но когда получил следующую ошибку, написал сюда.

И какие же еще пареметры вы задали ?


Если полностью, то вот так.

USE [master]
GO
EXEC master.dbo.sp_addlinkedserver @server = N'ABC', @srvproduct=N'SQL Server' , @provider=N'SQLOLEDB', @catalog = N'diasoft5nt'
13 окт 14, 14:57    [16697156]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
Glory
Member

Откуда:
Сообщений: 104760
EXEC master.dbo.sp_addlinkedserver @server = N'ABC', @srvproduct=N'' , @provider=N'SQLOLEDB', @datasrc='S1\instance1', @catalog = N'diasoft5nt'
13 окт 14, 15:00    [16697168]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
free_blocks
Guest
Glory, спасибо, так линк создался, при этом в его свойствах указан нужный каталог, равный базе.

К сожалению, если просто набрать

SELECT * FROM abc..hbill


Все равно требуется указать полное имя базы. Такой запрос возвращает данные.

SELECT * FROM abc.diasoft5nt.dbo.hbill
13 окт 14, 15:14    [16697285]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
Glory
Member

Откуда:
Сообщений: 104760
free_blocks
Все равно требуется указать полное имя базы.

Разумеется.
Только какое отношение формат именования удаленного объекта имеет к базе по-умолчанию ?


select * from openquery(myserver, 'select * from hbill') a
13 окт 14, 15:18    [16697324]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Часто люди бездумно используют синтаксис abc..hbill, а потом удивляются.
13 окт 14, 15:20    [16697343]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
free_blocks
Guest
Glory
Разумеется.
Только какое отношение формат именования удаленного объекта имеет к базе по-умолчанию ?


select * from openquery(myserver, 'select * from hbill') a


Идея была в том, чтобы запросы вида

SELECT * FROM abc..hbill


выполнялись без переписывания. Ну, чтобы abc ссылался на базу и не нужно было указывать имя базы в запросе. Интересовало, можно ли это сделать. Если нет, то вопрос закрываю, еще раз спасибо.
13 окт 14, 15:25    [16697383]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
Glory
Member

Откуда:
Сообщений: 104760
free_blocks
Идея была в том, чтобы запросы вида

SELECT * FROM abc..hbill



выполнялись без переписывания.

Это невозможно изначально. Вы даже к самому себе такой запрос не напишите.
Потому что части именования нельзя выбрасывать произвольно
select * from sysobjects
select * from dbo.sysobjects
select * from master.dbo.sysobjects
select * from myserver.master.dbo.sysobjects
13 окт 14, 15:32    [16697442]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
free_blocks
Guest
Glory
Это невозможно изначально. Вы даже к самому себе такой запрос не напишите.
select * from sysobjects
select * from dbo.sysobjects
select * from master.dbo.sysobjects
select * from myserver.master.dbo.sysobjects


А через openquery используется значение catalog и поэтому не требуется указывать имя базы?
13 окт 14, 15:37    [16697483]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
Glory
Member

Откуда:
Сообщений: 104760
free_blocks
А через openquery используется значение catalog и поэтому не требуется указывать имя базы?

да
13 окт 14, 15:39    [16697493]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
invm
Member

Откуда: Москва
Сообщений: 9400
free_blocks
Ну, чтобы abc ссылался на базу и не нужно было указывать имя базы в запросе.
Заведите себе синоним для удаленной таблицы.
13 окт 14, 15:39    [16697501]     Ответить | Цитировать Сообщить модератору
 Re: mssql linked server  [new]
free_blocks
Guest
invm
free_blocks
Ну, чтобы abc ссылался на базу и не нужно было указывать имя базы в запросе.
Заведите себе синоним для удаленной таблицы.


Да, специалисты поддержки так и делают. Просто схема тестовая и умирающая, не очень хочется заводить синонимы руками и тратить время. Попробовал помочь, но не вышло )

Еще раз спасибо!
13 окт 14, 15:42    [16697524]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить