Возникла проблема на нескольких серверах MS SQL 2005 Enterprise, где я хочу получить коллекцию метаданных на нескольких серверах и нескольких базах данных.В Stack Overflow я видел хороший пример использования магического sp_MSforeachdb, который я немного изменил ниже.По сути, хранимая процедура MS запускается динамически, и она ищет в любое время, когда база данных (?) Похожа на имя типа 'Case (fourspaces)'.Это здорово, и это дает мне то, что я хочу, но только для одного сервера.Я хочу сделать это для большего, возможно ли SQL-гуру?
Пример до сих пор:
SET NOCOUNT ON
DECLARE @AllTables table (CompleteTableName varchar(256))
INSERT INTO @AllTables (CompleteTableName)
EXEC sp_msforeachdb 'select distinct @@SERVERNAME+''.''+ ''?'' + ''.'' + p.name from [?].sys.procedures p (nolock) where ''?'' like ''Case____'''
SELECT * FROM @AllTables ORDER BY 1
Есть ли способ сделать это в SQL, Linq или ADO.NETчтобы выполнить эту умную встроенную хранимую процедуру, которая вставляет переменную таблицы, чтобы сделать это несколько раз на разных серверах, НО ...... Поместите это в один набор.Насколько я знаю, вы НЕ МОЖЕТЕ переключать серверы в одном сеансе в SQL Management Studio, но мне бы очень хотелось, чтобы в этом я ошибался.
EG: у меня есть производственная среда с 8 серверами, каждый из которыхимеет много баз данных.Я мог запустить это несколько раз, но я надеялся, что, если серверы уже были связаны, я мог бы сделать это как-нибудь из системного представления.Однако я нахожусь в среде, использующей SQL 2005 и получил загрузку MS для представлений sys, и похоже, что sys.servers находится на острове, где SERVERID, кажется, не присоединяется ни к чему другому.
Iхотел бы использовать устройство чтения ADO.NET или LINQ в среде C # и, возможно, несколько раз вызвать вышеуказанный код TSQL, но ...... Есть ли более эффективный способ получения информации непосредственно в TSQL, ЕСЛИ серверы связаныСЕРВЕРЫ?Просто любопытно.
Общая цель этой операции - в целях развертывания увидеть, сколько процедур существует на всех серверах и в базах данных.Теперь у нас есть SQL-сравнение с Redgate, но я не знаю, может ли он сценариев, которые не существуют, существовать так же, как набор A. Даже если бы я мог, я хотел бы попытаться сделать что-то самостоятельно, если это возможно.
Любая помощь очень ценится, и если вам нужны дополнительные разъяснения, пожалуйста, спросите.