生成只包含某些对象的 sql server 脚本?

Posted

技术标签:

【中文标题】生成只包含某些对象的 sql server 脚本?【英文标题】:Generate sql server script that will only include certain objects? 【发布时间】:2016-08-23 18:32:48 【问题描述】:

我们的数据库有大量表,但只有少数表和存储过程需要每周备份一次。

要备份,我右键单击数据库,单击生成脚本,然后选择要备份的对象。我通常将 Script Drop 更改为 True,将 Script Data 更改为 True,以及其他一些更改。然后我开始选择表和 SP,最后生成脚本。

有没有办法让这个自动化?这样我就不必每次都更改这些选项或选择相同的表。我不想(也不能)备份数据库。

我还看到this link 要求提供命令提示版本,但我不想为了自动化而使用 VB 或任何其他第 3 方语言。

我们使用 Sql Server 2008。

谢谢。

【问题讨论】:

这完全不是备份在 Sql Server 中的工作方式。 【参考方案1】:

我不是 DBA,但也许明智的做法是把这几张表放到不同的文件组中,然后每周安排一份工作来支持该文件组?

在此处阅读如何备份特定文件组:SQL Server Filegroup Backups

至于存储过程和其他对象。我会简单地使用数据库版本控制工具,例如 Git、SVN、TFS 或其他工具来对您的对象进行版本控制。

这个问题详细介绍了如何使用 Git 对数据库代码进行版本控制:How to use git as source control provider for SQL Server Management Studio

【讨论】:

相信我,如果我能做到,早就做到了。可惜我做不到。 @rbhatup 对象名称必须相同吗?我建议有一个需要不断备份的对象表,只需将数据插入到一些具有匹配对象名称以及更新日期的临时模式中。对于存储过程,您也可以使用 object_definition 函数在临时 Schema 中创建它们的备份。有任何意义吗?或者甚至更好地使用相同的函数 object_definition 将存储过程版本作为文本存储在该表中。 我的印象是文件组是另外一回事,比如为这些表创建一个单独的数据库。 我可以将表添加到文件组吗?例如,我有文件组“只读”;如何将十个不同的表添加到该文件组?该链接似乎仅显示如何备份文件组。谢谢。 我在看这个SO link,有人问同样的事情,但答复是移动索引和PK。【参考方案2】:

在 Redgate,我们有一个名为 DLM Dashboard 的免费工具。这会监控数据库的模式更改并在每次看到更改时对其进行快照,因此是完全自动化的。如果需要,可以在进行更改时设置警报。

我很想知道这是否满足您的需求。

【讨论】:

以上是关于生成只包含某些对象的 sql server 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

如何为包含所有存储行的现有 SQL Server 表生成 INSERT 脚本?

如何使用 SMO 和 SQL Server 生成脚本以删除列?

SQL Server 2012 生成的脚本无法再次运行?

如何转换SQL Server 2008数据库到SQL Server 2005

sqlserver 怎么把数据导出

在 SQL Server 2005 中为数据库角色成员生成脚本