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

Откуда:
Сообщений: 101
Доброго времени суток!

Есть необходимость проверять на нескольких MSSQL серверах (сейчас около 100, но будет больше) наличие вьюхи и если ее нет, тогда создавать. С проверкой проблем не возникло. Я иду в цикле по серверам и через OpenQuery к линкедсерверу проверяю есть вьюха или нет. Пока только формирую информацию о том где есть а где нету ну и рассылаю эту информацию. Но мне надо в том случае если нету сразу создать эту вьюху а не уведомлять. Естественно через OpenQuery объект не создать на удаленном сервере (там только select/update). Естественно искал на просторах интернета и в том числе и на этом форуме, но мне попадались только лишь темы где топикстартер спрашивает как сделать подобное, а потом пишет что уже сделал, но как и через что, к сожалению не расписано, не говоря уже о примере кода, хотя бы примерном. Поэтому очень прошу строго не судить, а помочь.
Опять же, хотел особо отметить, что надо получить в итоге скрипт, который в джоб засуну и он будет сам все это производить. Варианты как зная сервер подключиться через GUI и прогнать скрипт само собой известны, а вот как только через скрипт. Понимаю, что это возможно через DTS но как, пока не могу понять.

Большое спасибо за помощь!
7 мар 15, 10:04    [17355779]     Ответить | Цитировать Сообщить модератору
 Re: Создание view на нескольких удаленных серверах в job  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
declare
 @cmd nvarchar(max) = N'if object_id(''dbo.MyView'', ''V'') is null exec(''create view dbo.MyView as select * from MyTable'');',
 @Proc sysname = N'MyLinkedserver.MyDB.sys.sp_executesql';

exec @Proc @cmd;
7 мар 15, 10:39    [17355821]     Ответить | Цитировать Сообщить модератору
 Re: Создание view на нескольких удаленных серверах в job  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8353
MakPol,

с какой целью Вы их создаёте?
7 мар 15, 17:01    [17356499]     Ответить | Цитировать Сообщить модератору
 Re: Создание view на нескольких удаленных серверах в job  [new]
MakPol
Member

Откуда:
Сообщений: 101
invm
declare
 @cmd nvarchar(max) = N'if object_id(''dbo.MyView'', ''V'') is null exec(''create view dbo.MyView as select * from MyTable'');',
 @Proc sysname = N'MyLinkedserver.MyDB.sys.sp_executesql';

exec @Proc @cmd;


Огромное спасибо!

Идеально подошло. Огромное спасибо!

До этого встречал другие способы. Проверил, все работает идеально. Единственное на линкед серверах надо не забыть включить 'rpc out', иначе не будет работать. На сколько понимаю 'rpc' можно не включать.

Еще раз спасибо"
7 мар 15, 17:44    [17356566]     Ответить | Цитировать Сообщить модератору
 Re: Создание view на нескольких удаленных серверах в job  [new]
MakPol
Member

Откуда:
Сообщений: 101
Владислав Колосов
MakPol,

с какой целью Вы их создаёте?

Из этих вьюх через линкедсервера статистика собирается. Запрос длинноват и в приложение, собирающее статистику, лучше вставлять что-то покороче. Да и если что-то надо поменять в алгоритме сбора статистики в приложении неохота что-то менять и уж потом обновлять всем :)
7 мар 15, 17:48    [17356573]     Ответить | Цитировать Сообщить модератору
 Re: Создание view на нескольких удаленных серверах в job  [new]
Glory
Member

Откуда:
Сообщений: 104751
MakPol
Я иду в цикле по серверам и через OpenQuery к линкедсерверу проверяю есть вьюха или нет. П

https://msdn.microsoft.com/en-us/library/ms191305.aspx
7 мар 15, 18:12    [17356605]     Ответить | Цитировать Сообщить модератору
 Re: Создание view на нескольких удаленных серверах в job  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8353
MakPol
Владислав Колосов
MakPol,

с какой целью Вы их создаёте?

Из этих вьюх через линкедсервера статистика собирается. Запрос длинноват и в приложение, собирающее статистику, лучше вставлять что-то покороче. Да и если что-то надо поменять в алгоритме сбора статистики в приложении неохота что-то менять и уж потом обновлять всем :)


В этом случае используйте OPENQUERY.
8 мар 15, 13:34    [17358329]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить