Я не уверен, возможно ли это сделать с помощью цикла в TSQL.
У меня есть список баз данных, которые я хотел бы просмотреть и для каждого удаления базы данных и при необходимости воссоздать представление.
У меня уже есть скрипт для удаления и воссоздания вида. Тем не менее, в настоящее время в верхней части моего скрипта у меня есть куча операторов использования, и я просто иду вниз по списку, раскомментируя и перезапуская скрипт. Однако я хотел бы автоматизировать это так, чтобы это было намного быстрее. В прошлом я делал похожую вещь, зацикливая строку с именами баз данных и используя ее для выполнения оператора использования. Что работает, кроме случаев создания представлений, потому что представление должно быть отделено операторами go. Вот фрагмент кода моего кода для разбора баз данных, любая помощь в работе с представлениями была бы великолепна.
DECLARE @DBs AS VARCHAR(MAX);
DECLARE @OneDB AS VARCHAR(255);
DECLARE @CmdToExec AS VARCHAR(MAX);
SET @DBs = 'db1,db2,db3,db4,db5,db6,db7,db8,db9,db10,db11,db12,db13,db14,db15,db16'
DECLARE DB_Cursor CURSOR FOR
SELECT SUBSTRING( ',' + @DBs + ',', n + 1,
CHARINDEX( ',', ',' + @DBs + ',', n + 1 ) - n - 1 ) AS "dbInfo"
FROM CommunityPAL.dbo.Numbers
WHERE SUBSTRING( ',' + @DBs + ',', n, 1 ) = ','
AND n < LEN( ',' + @DBs + ',' );
OPEN DB_Cursor;
FETCH NEXT FROM DB_Cursor INTO @OneDB;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @CmdToExec = 'USE ' + @OneDB;
EXEC @CmdToExec;
--statements to execute
FETCH NEXT FROM DB_Cursor INTO @OneDB;
END
CLOSE DB_Cursor
DEALLOCATE DB_Cursor