У меня есть набор названий хранимой процедуры. Я хочу экспортировать создать сценарий для каждой хранимой процедуры. Что лучший способ состоит в том, чтобы сделать это?
Прямо сейчас я вручную выбираю сохраненный proc в SSMS и выборе "Script stored procedure as -> Drop and Create to"
. Это кажется утомительным. Я надеюсь, что существует лучший способ иметь дело с этим.Спасибо.
Вы можете щелкнуть правой кнопкой мыши базу данных в обозревателе объектов и выполнить Задача> Создать сценарии.
Это позволяет вам выбрать целую группу объектов для написания сценария (например, таблицы, представления, сохраненные процессы), и вы можете сохранить их в одном большом файле SQL или одном файле SQL для каждого объекта. Работает действительно неплохо!
Обновление: , если вы хотите сделать это в приложении SQL Server Management Studio, вы можете использовать этот сценарий SQL для поиска сохраненных процессов и их определений - однако вы не можете заставить SQL Server Mgmt Studio записывать файлы в диск, который не работает, но вы можете скопировать результаты, например, в Excel.
SELECT
pr.name ,
pr.type_desc ,
pr.create_date ,
mod.definition
FROM sys.procedures pr
INNER JOIN sys.sql_modules mod ON pr.object_id = mod.object_id
WHERE pr.Is_MS_Shipped = 0
Чтобы вывести все классы, соответствующие определенному критерию, можно использовать что-то вроде следующего.
DECLARE @t VARCHAR(max) = '';
SELECT @t = @t +
'If OBJECT_ID(''' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' + QUOTENAME(OBJECT_NAME(object_id)) + ''',''p'') IS NOT NULL
DROP PROCEDURE ' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' + QUOTENAME(OBJECT_NAME(object_id)) + '
GO
SET ANSI_NULLS '
+ CASE
WHEN uses_ansi_nulls = 1 THEN 'ON'
ELSE 'OFF'
END
+ '
GO
SET QUOTED_IDENTIFIER '
+ CASE
WHEN uses_quoted_identifier = 1 THEN 'ON'
ELSE 'OFF'
END
+ '
GO
' + definition + '
GO
'
FROM [sys].[sql_modules]
WHERE OBJECTPROPERTY (object_id,'IsProcedure' )=1
AND OBJECT_NAME(object_id) LIKE '%some_patttern%'
/*Stops the long text from getting truncated in SSMS*/
SELECT @t AS [processing-instruction(x)]
FOR XML PATH('')
Если вы выберете «Просмотр» -> «Сводка»
, затем щелкните «Сохраненные процедуры» в проводнике объектов, он предоставит вам список всех ваших хранимых процедур, которые вы можете Ctrl / Shift выделить (выбрать кратные). Затем оттуда вы можете создать все сценарии перетаскивания сразу, а затем все сценарии создания. Это одна из многих особенностей SSMS, которые я обнаружил.
Примечание. Еще одна полезная функция - это опция фильтра, позволяющая с легкостью фильтровать хранимые процедуры / таблицы. Просто щелкните правой кнопкой мыши в проводнике объектов, чтобы открыть меню.
Visual Studio 2008 Database Professional Edition и Visual Studio 2010 Professional (и выше) поддерживают специальные типы проектов для SQL Server 2005/2008. Эти проекты поддерживают автоматическое создание сценариев изменений, содержащих все изменения между текущим проектом и указанной целевой базой данных.
AFAIK RedGate также предоставляет некоторые подобные инструменты, но у меня нет опыта работы с ними.
Вы можете посмотреть на sp_helptext, чтобы найти некоторые идеи о том, как вы можете использовать его для создания своих скриптов.