Назад | Перейти на главную страницу

Перенос хранимых процедур из одной базы данных в другую в SQL Server

Я использую SQL Server 2008 и хочу скопировать хранимые процедуры из одной базы данных в другую. Как?

Щелкните правой кнопкой мыши SP под БД и выберите «Сохраненная процедура сценария как> СОЗДАТЬ в> Файл», он создаст файл сценария SQL, а затем запустит этот сценарий в другой базе данных.

Просто используйте Management Studio для создания сценария для хранимых процедур, сохраните сценарий в файл, а затем запустите его на другом сервере SQL.

По памяти вы щелкаете правой кнопкой мыши базу данных и в разделе «Все задачи» выберите «Создать сценарии» или что-то в этом роде. Это создаст Transact-SQL для создания того, что вы выберете.

JR

Вот запрос (установите вывод в текст) для возврата хранимых процедур:

SELECT ROUTINE_DEFINITION
FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE='PROCEDURE'

В SSMS есть параметры, позволяющие генерировать разрешения для пользователей - это удобно.

Инструменты> параметры> сценарии

Вы также можете создать несколько сценариев, щелкнув «хранимые процедуры» на панели «Обозреватель объектов», а затем выбрав несколько процедур в окне «Сведения» обозревателя объектов. Щелкните правой кнопкой мыши выбранные процедуры, и вы готовы к работе.

Я предпочитаю Redgate SQL Compare.

Все ответы выше хороши и будут работать. Проблема в том (во всяком случае, в моем мире): где ваши спроки?

В моем случае у нас есть один набор sprocs в базе данных приложения (бизнес-логика и т. Д.), А другой набор sproc управления системой в master.

Кикер для меня - перемещать (и синхронизировать) sprocs в главном ....

Вы можете скопировать всю базу данных, включая хранимые процедуры, возможно, это то, что вам нужно:

В Ms SQL Server Managment studio -> Щелкните правой кнопкой мыши по исходной базе данных, перейдите в меню «Задачи» и выберите «Копировать базу данных».

Это создаст полную копию исходного кода, включая таблицы, данные и сохраненные процедуры.

У @Ash Machine есть хорошая идея, но он использует неправильный запрос, который ограничивает возвращаемый результат nvarchar (4000).

Используйте вместо

Select definition from sys.sql_modules where object_id = object_id('<procname>')

и вы получите полное неусеченное определение.

В большинстве практических случаев это работает в графических интерфейсах, таких как SSMS, когда вы используете вывод в текст и устанавливаете максимальное количество символов в столбце pro равным 8192. Если некоторые строки шире 8192, это не удается. Но обратите внимание, что это ограничение инструмента запроса, а не самого запроса. Это ограничение проникло и в SQLServer 2012.

Используя ADO.NET, возможно, через PowerShell, как в SQLPSX sqlise вы можете получить полное определение.

Если вы хотите хранить только резервные копии определения процедуры в некоторой таблице той же базы данных, это тоже работает.