从命令行生成存储过程

时间:2011-06-20 12:55:51

标签: sql sql-server-2005 stored-procedures

我想从SQL Server 2005生成脚本,即存储过程和用户​​定义的函数。我是通过SQL管理工作室完成的,但我想通过命令行完成。是否有任何方法可以通过命令行参数(如sqlcmd.exe或任何其他脚本)来执行此操作。

3 个答案:

答案 0 :(得分:1)

将sp_helptext与来自SQLCMD的查询一起使用 http://msdn.microsoft.com/en-us/library/ms176112.aspx

答案 1 :(得分:0)

如果您更喜欢具有更大灵活性的东西,请查看sys.sql_modules系统视图,因为它为您提供了有关该对象的一些额外信息,并且具有能够加入其他系统表的良好能力。

MauMen的其余部分是正确的方向:使用SQLCMD生成带有“-o OutputFile.sql”的文件的输出。

例如,创建一个proc:

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 Utility MSDN page上查找。需要注意的重要一点是使用“set nocount on”;在脚本的开头,以防止“(1行受影响)”页脚。

答案 2 :(得分:0)

几周前微软发布了一个名为mssql-scripter的新工具,它是"生成脚本"的命令行版本。 SSMS中的向导。它是一个基于Python的开源命令行工具,您可以找到官方声明here。本质上,脚本编写器允许您为数据库/数据库对象生成一个.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