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

Откуда:
Сообщений: 76
Добрый день!
Прошу помочь.
Необходимо создать механизм сохранения всех "живых" скриптов всех пользовательских хранимых процедур.
В последствии - предполагается использовать не только для процедур, но и для других объектов базы.
Решил использовать Ole Automation Procedures.

--EXEC sp_configure 'Ole Automation Procedures', 1
--GO
--RECONFIGURE
--GO
declare @dbname varchar(max)='master',
		@spname varchar(max)='FilesInFolder', 
		@filename varchar(max)='c:\FilesInFolder.sql',
		@query varchar(max)

DECLARE @OBJECT INT
DECLARE @hr INT
DECLARE @RETURN VARCHAR(200)

EXEC @hr=SP_OACREATE 'SQLDMO.SQLServer', @OBJECT OUT
IF @hr<>0
	BEGIN	
		EXEC sp_displayoaerrorinfo @OBJECT
		RETURN	
	END
SET @query= 'Databases("'+ @dbname +'").StoredProcedures("'+ RTRIM((@spname))+'").Script(74077,"'+ @filename +'")'
EXEC @hr=SP_OAMETHOD @OBJECT, @query, @RETURN OUT


Вопрос: Почему не работает
EXEC @hr=SP_OACREATE 'SQLDMO.SQLServer', @OBJECT OUT
?

OLE Automation информация об ошибке:
Источник: ODSOLE Extended Procedure
Описание: Недопустимая строка с указанием класса

Класса SQLDMO.SQLServer в SQL Server 2012 нет?
Какой класс для этого использовать?

PS: Microsoft SQL Server 2012 - 11.0.2100.60 (Intel X86)
Feb 10 2012 19:13:17
Copyright (c) Microsoft Corporation
Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
23 янв 14, 11:57    [15455827]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lanselot
Класса SQLDMO.SQLServer в SQL Server 2012 нет?

Нет. О чем написано в хелпе

Lanselot
Какой класс для этого использовать?

SQLSMO
23 янв 14, 11:59    [15455842]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Lanselot
Member

Откуда:
Сообщений: 76
EXEC @hr=SP_OACREATE 'SQLSMO.SQLServer', @OBJECT OUT

тоже не работает...
23 янв 14, 12:07    [15455906]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lanselot
тоже не работает...

Мда. А почему вы считаете, что поменялась только одна буковка в именовании ?
23 янв 14, 12:09    [15455924]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Lanselot
Member

Откуда:
Сообщений: 76
А где бы поискать список всех возможных progid, с указанием содержимого?
23 янв 14, 12:10    [15455940]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lanselot
А где бы поискать список всех возможных progid, с указанием содержимого?

select OBJECT_DEFINITION(object_id) from sys.procedures
23 янв 14, 12:15    [15455970]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Lanselot
Member

Откуда:
Сообщений: 76
В очередной раз спасибо, Glory!
Ларчик открывался совсем просто - это я замудЛил.
23 янв 14, 12:20    [15456005]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Lanselot
Member

Откуда:
Сообщений: 76
Glory,
а как вытащить скрипты для JOB-ов?
23 янв 14, 14:28    [15457067]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lanselot
а как вытащить скрипты для JOB-ов?

Нажать кнопочку Script в меню студии
23 янв 14, 14:29    [15457080]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Lanselot
Member

Откуда:
Сообщений: 76
Динамически. Т.е. job, который тащит скрипты всех остальных job, и пишет например в файл.
23 янв 14, 14:32    [15457096]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lanselot
Т.е. job, который тащит скрипты всех остальных job, и пишет например в файл.

Напишите скрипт.
Найдите утилиту.
Сделайте бэкап базы.
23 янв 14, 14:35    [15457110]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Lanselot
Member

Откуда:
Сообщений: 76
Все-таки Ole Automation Procedures?
23 янв 14, 14:48    [15457223]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Glory
Member

Откуда:
Сообщений: 104760
Lanselot
Все-таки Ole Automation Procedures?

На чем умеете/можете, на том и пишите.
23 янв 14, 14:50    [15457242]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Lanselot
Member

Откуда:
Сообщений: 76
Теперь у меня есть процедура, создающая скрипты для job. Если кому нужна - в личку.
28 янв 14, 14:06    [15481846]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Glory
Member

Откуда:
Сообщений: 104760
И чем она лучше скажем этого ?
http://www.johnsansom.com/script-sql-server-agent-jobs-using-powershell/
28 янв 14, 14:11    [15481898]     Ответить | Цитировать Сообщить модератору
 Re: Динамическая генерация скриптов для всехпользовательских хранимых процедур  [new]
Lanselot
Member

Откуда:
Сообщений: 76
Не лучше. Просто скриптом на SQL сделана, а не через PS.
28 янв 14, 14:22    [15482009]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить