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

Откуда: Где где .. в караганде
Сообщений: 538
Добрый день!

Имею прилинкованный сервер.

Каким образом можно получить список всех БД, на прилинкованном сервере, к которым я имею доступ?

Может быть с чем то нужно соединить sys.databases ?

Заранее благодарю.
12 мар 14, 07:29    [15708089]     Ответить | Цитировать Сообщить модератору
 Re: Получить набор всех БД к которым имею доступ через LINK?  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Хотел бы пояснить:

На сервере будет куча БД(с одинаковой структурой) которые возможно будут удалять добавляться (со временем).
Процедура должна будет в курсоре перебирать все базы собирая нужные данные, затем писать все это дело в БД на моем сервере.
12 мар 14, 08:14    [15708135]     Ответить | Цитировать Сообщить модератору
 Re: Получить набор всех БД к которым имею доступ через LINK?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/articles/mssql/02030101undocumentedsql.shtml#sp_MSforeachdb
12 мар 14, 08:19    [15708139]     Ответить | Цитировать Сообщить модератору
 Re: Получить набор всех БД к которым имею доступ через LINK?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
exec  ( 'select name from sys.databases where has_dbaccess(name) = 1' ) at MyLinkedServer
12 мар 14, 08:55    [15708187]     Ответить | Цитировать Сообщить модератору
 Re: Получить набор всех БД к которым имею доступ через LINK?  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Knyazev Alexey
exec  ( 'select name from sys.databases where has_dbaccess(name) = 1' ) at MyLinkedServer


Хороший вариант - спасибо работает!
12 мар 14, 09:23    [15708249]     Ответить | Цитировать Сообщить модератору
 Re: Получить набор всех БД к которым имею доступ через LINK?  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Результаты этого запроса необходимо поместить во временную таблицу.


declare @temp table(name varchar(50))
insert into @temp
exec  ('select name from sys.databases where has_dbaccess(name) = 1 and name like '+'''FT%''' ) at МОЙСЕРВЕР


Далее столкнулся с проблемой:
Выходит ошибка:

MSDTC on server 'ИМЯМОЕГОСЕРВЕРА' is unavailable.


Пробую запустить службу MSDTC в винде, после чего выдает уже такую ошибку:

OLE DB provider "SQLNCLI10" for linked server "ПРИЛИНКОВЫННЫЙСЕРВЕР" returned message "Диспетчер транзакций отключил поддержку удаленных и сетевых транзакций.".
Msg 7391, Level 16, State 2, Line 5
The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "tan" was unable to begin a distributed transaction.


Как бы решить эту проблему?
12 мар 14, 09:44    [15708308]     Ответить | Цитировать Сообщить модератору
 Re: Получить набор всех БД к которым имею доступ через LINK?  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
http://support.microsoft.com/kb/2027550
12 мар 14, 09:49    [15708319]     Ответить | Цитировать Сообщить модератору
 Re: Получить набор всех БД к которым имею доступ через LINK?  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6204
Openquery? Он вроде как тоже отправляет запрос исполняться на стороне linked server'а
declare
  @t table (name varchar(50));
insert into @t
  select name from openquery([my-linked-server],'select name from sys.databases where has_dbaccess(name) = 1 and name like ''m%''')
select * from @t
12 мар 14, 10:53    [15708574]     Ответить | Цитировать Сообщить модератору
 Re: Получить набор всех БД к которым имею доступ через LINK?  [new]
mr.dfox
Member

Откуда: Где где .. в караганде
Сообщений: 538
Сон Веры Павловны,

Точно ) Спасибо!
Использую openquery.
12 мар 14, 12:27    [15709353]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить