Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
MakPol Member Откуда: Сообщений: 101 |
Доброго времени суток! Есть необходимость проверять на нескольких MSSQL серверах (сейчас около 100, но будет больше) наличие вьюхи и если ее нет, тогда создавать. С проверкой проблем не возникло. Я иду в цикле по серверам и через OpenQuery к линкедсерверу проверяю есть вьюха или нет. Пока только формирую информацию о том где есть а где нету ну и рассылаю эту информацию. Но мне надо в том случае если нету сразу создать эту вьюху а не уведомлять. Естественно через OpenQuery объект не создать на удаленном сервере (там только select/update). Естественно искал на просторах интернета и в том числе и на этом форуме, но мне попадались только лишь темы где топикстартер спрашивает как сделать подобное, а потом пишет что уже сделал, но как и через что, к сожалению не расписано, не говоря уже о примере кода, хотя бы примерном. Поэтому очень прошу строго не судить, а помочь. Опять же, хотел особо отметить, что надо получить в итоге скрипт, который в джоб засуну и он будет сам все это производить. Варианты как зная сервер подключиться через GUI и прогнать скрипт само собой известны, а вот как только через скрипт. Понимаю, что это возможно через DTS но как, пока не могу понять. Большое спасибо за помощь! |
7 мар 15, 10:04 [17355779] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8353 |
MakPol, с какой целью Вы их создаёте? |
7 мар 15, 17:01 [17356499] Ответить | Цитировать Сообщить модератору |
MakPol Member Откуда: Сообщений: 101 |
Огромное спасибо! Идеально подошло. Огромное спасибо! До этого встречал другие способы. Проверил, все работает идеально. Единственное на линкед серверах надо не забыть включить 'rpc out', иначе не будет работать. На сколько понимаю 'rpc' можно не включать. Еще раз спасибо" |
||
7 мар 15, 17:44 [17356566] Ответить | Цитировать Сообщить модератору |
MakPol Member Откуда: Сообщений: 101 |
Из этих вьюх через линкедсервера статистика собирается. Запрос длинноват и в приложение, собирающее статистику, лучше вставлять что-то покороче. Да и если что-то надо поменять в алгоритме сбора статистики в приложении неохота что-то менять и уж потом обновлять всем :) |
||
7 мар 15, 17:48 [17356573] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
https://msdn.microsoft.com/en-us/library/ms191305.aspx |
||
7 мар 15, 18:12 [17356605] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8353 |
В этом случае используйте OPENQUERY. |
||||
8 мар 15, 13:34 [17358329] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |