хранимая процедура t-sql создает сценарии

У меня есть набор названий хранимой процедуры. Я хочу экспортировать создать сценарий для каждой хранимой процедуры. Что лучший способ состоит в том, чтобы сделать это?

Прямо сейчас я вручную выбираю сохраненный proc в SSMS и выборе "Script stored procedure as -> Drop and Create to". Это кажется утомительным. Я надеюсь, что существует лучший способ иметь дело с этим.Спасибо.

15
задан stackoverflowuser 20 July 2010 в 17:15
поделиться

5 ответов

Вы можете щелкнуть правой кнопкой мыши базу данных в обозревателе объектов и выполнить Задача> Создать сценарии.

alt text

Это позволяет вам выбрать целую группу объектов для написания сценария (например, таблицы, представления, сохраненные процессы), и вы можете сохранить их в одном большом файле 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
22
ответ дан 1 December 2019 в 01:10
поделиться

Чтобы вывести все классы, соответствующие определенному критерию, можно использовать что-то вроде следующего.

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('') 
9
ответ дан 1 December 2019 в 01:10
поделиться

Если вы выберете «Просмотр» -> «Сводка»

, затем щелкните «Сохраненные процедуры» в проводнике объектов, он предоставит вам список всех ваших хранимых процедур, которые вы можете Ctrl / Shift выделить (выбрать кратные). Затем оттуда вы можете создать все сценарии перетаскивания сразу, а затем все сценарии создания. Это одна из многих особенностей SSMS, которые я обнаружил.

Примечание. Еще одна полезная функция - это опция фильтра, позволяющая с легкостью фильтровать хранимые процедуры / таблицы. Просто щелкните правой кнопкой мыши в проводнике объектов, чтобы открыть меню.

2
ответ дан 1 December 2019 в 01:10
поделиться

Visual Studio 2008 Database Professional Edition и Visual Studio 2010 Professional (и выше) поддерживают специальные типы проектов для SQL Server 2005/2008. Эти проекты поддерживают автоматическое создание сценариев изменений, содержащих все изменения между текущим проектом и указанной целевой базой данных.

AFAIK RedGate также предоставляет некоторые подобные инструменты, но у меня нет опыта работы с ними.

1
ответ дан 1 December 2019 в 01:10
поделиться

Вы можете посмотреть на sp_helptext, чтобы найти некоторые идеи о том, как вы можете использовать его для создания своих скриптов.

1
ответ дан 1 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: