Microsoft SQL Server Management Studio从脚本内部运行脚本

时间:2011-11-01 16:24:35

标签: sql sql-server automation

我希望能够分别保存和存储一堆不同的创建表脚本。

要构建整个数据库,我将有一个master .sql文件,它按顺序调用所有脚本,以便以正确的顺序创建表中的所有外键。

然后,我还可以创建一个脚本来删除整个表结构,方法是以相反的顺序删除它们。

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:13)

使用晦涩的r: SQLCMD命令:

  

:r<文件名>

     

将指定文件中的其他Transact-SQL语句和sqlcmd命令解析为语句缓存。

假设您的创建脚本是createT1.sqlcreateT2.sql,那么您的主.sql文件将类似于:

create database foo;
go

use foo;
go

:r createT1.sql
:r createT2.sql
go

此语法也适用于SSMS,只要启用SQLCMD模式,请参阅Editing SQLCMD Scripts with Query Editor。如果您想将此代码嵌入到应用程序中,dbutilsqlcmd库也支持:r扩展名。

答案 1 :(得分:3)

我认为最简单的方法是拥有一个主批量文件,在该批处理文件中,您可以按顺序将sqlcmd调用到所有脚本文件(* .sql)。

以下是有关如何执行此操作的良好参考:http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/

答案 2 :(得分:1)

由于您将SSMS放在问题的标题中,我将假设您希望能够从那里执行此操作。

您可以在SQLCMD模式下运行SSMS。这应该会给你更多的灵活性。您可以查看here的快速演示,或查找有关Microsoft's website的更多信息。

对于简单的命令行功能,我个人会使用Powershell脚本。您可以添加Microsoft SQL cmdlet以允许您连接到SQL Server,或者您可以使用SMO自行创建或使用第三方解决方案,例如开源SQLPSX。