如何将.sql脚本拆分为多个文件?

时间:2009-05-13 12:47:18

标签: sql sql-server-2005 tsql

我正在使用DatabasePublishingWizard生成一个包含数据和架构的大型创建脚本。它产生的文件是巨大的,因此打开脚本来修复任何语法错误几乎是不可能的,而且小于4gb的机器很难让它运行!我该怎么办,怎么办呢?感谢大家提供的任何帮助。

5 个答案:

答案 0 :(得分:4)

使用数据库发布向导,您可以将所有对象创建为单独的文件而不是一个大文件。然后,您可以将所有文件放在源代码管理中并跟踪所有更改。

我当前的项目使用脚本来重新创建用于开发的数据库。该脚本删除所有现有对象,然后使用以下语句为每个目标文件读取它们。

sqlcmd -S%1 -d THRIVEHQ -E -b -i“../Tables/Schema.sql” 如果%ERRORLEVEL%NEQ 0转到错误

答案 1 :(得分:1)

只想添加凯文的评论。将脚本分解为单独的文件然后编写脚本以按执行顺序放置所有文件。

当转储具有大量相互依赖关系的大型数据库作为一个大文件时,对您来说不会有太大好处,因为在大多数情况下,脚本将无法执行而不会出现错误。在我的世界中,我使用命名约定来帮助我快速查看哪些视图依赖于其他视图。例如,如果我有一个只生成数据转储的视图,我会使用类似这样的v_VIEW_NAME_ORIGINATING-TABLE_Dump,那么我会将后缀更改为_weekly或_weekly_Summary,以用于从主转储表派生的视图。

我多年前就吸取了教训,并且在我的所有数据库中都遵循了这个命名模式。

答案 2 :(得分:1)

尝试使用DBSourceTools http://dbsourcetools.codeplex.com
它会将整个数据库编写为磁盘,每个数据库对象一个文件 使用部署目标,您可以从文件重新创建任何数据库 它专门用于帮助开发人员在源代码控制下获取数据库。

答案 3 :(得分:0)

在我的脑海中,我会说写一个脚本将文件分成多个,并在每个“GO”语句后发生中断。您可以编写另一个脚本来按顺序执行每个已分解的文件。

答案 4 :(得分:0)

我会分步进行。

将所有表格和视图生成为1个脚本。

将所有存储过程和授权生成为1个脚本。

使用DTS或SSIS迁移您的数据。

所有这一切都可以通过MS SQL Server Management Studio实现。