Генерация хранимых процедур из командной строки - PullRequest
1 голос
/ 20 июня 2011

Я хочу создавать сценарии, т.е. хранимые процедуры и пользовательские функции, из SQL Server 2005. Я сделал это через SQL Management Studio, но я хочу сделать это через командную строку.Есть ли способ сделать это через аргументы командной строки, такие как sqlcmd.exe или любой другой сценарий.

Ответы [ 3 ]

1 голос
/ 21 июня 2011

использовать sp_helptext с запросом из SQLCMD http://msdn.microsoft.com/en-us/library/ms176112.aspx

0 голосов
/ 12 июня 2017

Несколько недель назад Microsoft выпустила новый инструмент под названием mssql-scripter, который представляет собой версию мастера создания сценариев в SSMS для командной строки. Это инструмент командной строки с открытым исходным кодом, основанный на Python, и вы можете найти официальное объявление здесь . По сути, сценарий позволяет генерировать сценарий T-SQL для вашей базы данных / объекта базы данных в виде файла .sql. Вы можете сгенерировать файл и затем выполнить его. Это может быть хорошим решением для генерации схемы и / или ваших объектов БД, таких как хранимые процессы. Вот быстрый пример использования, чтобы вы начали:

$ pip install mssql-scripter
# script the database schema and data piped to a file.
$ mssql-scripter -S localhost -d AdventureWorks -U sa --include-objects StoredProcs --schema-and-data > ./myFile.sql

Дополнительные примеры использования находятся на нашей странице GitHub здесь: https://github.com/Microsoft/sql-xplat-cli/blob/dev/doc/usage_guide.md

0 голосов
/ 21 июня 2011

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

Остальная часть ответа MauMen - правильное направление: используйте SQLCMD, чтобы сгенерировать вывод в файл с "-o OutputFile.sql".

Например, создать процедуру:

create proc dbo.pr_procDefTest
as
print 'This is a proc definition'
go

Показать определение:

select m.definition
from sys.procedures p
inner join sys.sql_modules m on p.object_id = m.object_id
where p.name = 'pr_procDefTest'

Вывод с SQLCMD:

sqlcmd -E -S .\sqlexpress -d test -o OutputFile.sql -Q "set nocount on; select m.definition from sys.procedures p inner join sys.sql_modules m on p.object_id = m.object_id where p.name = 'pr_procDefTest'" -h -1 -w 65535

Передается множество параметров, которые вы можете найти на странице Утилита sqlcmd MSDN . Важно отметить использование "set nocount on;" в начале скрипта, чтобы предотвратить "(1 строки затронуты)" нижний колонтитул.

...