我希望能够分别保存和存储一堆不同的创建表脚本。
要构建整个数据库,我将有一个master .sql文件,它按顺序调用所有脚本,以便以正确的顺序创建表中的所有外键。
然后,我还可以创建一个脚本来删除整个表结构,方法是以相反的顺序删除它们。
有办法做到这一点吗?
答案 0 :(得分:13)
使用晦涩的r:
SQLCMD命令:
:r<文件名>
将指定文件中的其他Transact-SQL语句和sqlcmd命令解析为语句缓存。
假设您的创建脚本是createT1.sql
和createT2.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。