2011-06-20 71 views
1

我要生成脚本从SQL Server 2005。我已经做到了通过SQL Management Studio中,即存储过程和用户​​定义函数的存储过程,但我想通过命令行做到这一点。是否有任何方式通过像sqlcmd.exe或任何其他脚本这样的命令行参数来执行此操作。生成命令行

+0

的重复[我怎样才能在SQL Server Management Studio 2008的自动“生成脚本”任务?(http://stackoverflow.com/questions/483568/how-can-i-automate-the-generate-scripts-task-in-sql-server-management-studio-20) - 看到这对以前的SO问题如何做到这一点 –

+0

该解决方案是不是一个确切的答案,但你会发现这是一种有益的选择:http://weblogs.asp.net/stevewellens/archive/2009/12/11/automatically-generate-stored-procedures -with-visual-studio.aspx –

回答

0

如果你喜欢多一点灵活性的东西,检查出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 

有多种传入PARAMATERS的,这你可以看看sqlcmd Utility MSDN page。重要的是要注意使用“set nocount on”;在脚本的开头,以防止“(1行受到影响)”页脚。

+1

@Cadeaeic我喜欢你解决方案。它很好地扩展了我的想法。 – MauMen

0

微软发布了一个新的工具,在几个星期前称为MSSQL,编剧这是在SSMS“生成脚本”向导的命令行版本。这是一个基于Python的,开源的命令行工具,你可以找到官方公布here。本质上,脚本允许您为数据库/数据库对象生成一个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