10

如果我使用 2012 创建一个数据库并工作并将该信息添加到其中,如果我要在之后编写数据库脚本,我是否能够在 2008 年运行该脚本并让一切正常运行?

4

3 回答 3

22

如果您使用的是 SQL Management Studio,您可以右键单击数据库名称,然后选择Tasks → Generate Scripts

在这里,您将能够创建脚本来编写架构、数据或架构和数据的脚本,如果单击“高级”按钮,则可以指定要定位的 SQL Server 版本。

因此,只需选择 SQL 2008 作为目标服务器,您就可以开始使用了!

于 2012-04-24T18:32:09.970 回答
10

脚本?是的。好吧,让我换个说法:这取决于。只要您的对象不使用任何 2012 特定的功能,您就可以使用 Management Studio 或各种 3rd 方工具编写模式脚本(我在博客中介绍了一些选项)。许多工具还提供选项(或配套工具)来编写数据脚本。

问题是 SQL Server 2012 中没有一种非常简单的方法来识别您可能使用 2012 特定功能的所有位置。例如,我不知道有什么工具可以检查您的数据库并指出您正在使用该FORMAT()功能,该功能在 SQL Server 2008 或 2008 R2 中不可用。

其他复制数据库的方法——备份/恢复、附加/分离、镜像/日志传送等将不起作用。您可以(从 2005、2008 或 2008 R2)上升到 2012,但不能倒退。

所以总的来说,我同意约翰的观点。在版本 <= 部署版本上开发更安全。为什么要在 2012 年开发以部署到 2008 年?对我来说似乎很冒险。

于 2012-04-24T19:37:41.300 回答
2

如果您有大量数据要移动(千兆字节),那么 SQL Management Studio 将为您生成的 TSQL 脚本可能会因为庞大的大小而给您带来问题。更好的选择是使用 BCP(批量复制程序)。缺点是这是一个命令行实用程序,需要比仅使用向导更多的工作。

幸运的是,有人写了一些看起来非常像只使用 BCP 的向导的东西。它是 SQL 数据库迁移向导,可在 Codeplex - http://sqlazuremw.codeplex.com/releases/view/32334免费获得。最初旨在作为 SQL Server 和 Azure 之间的数据库迁移工具,您可以在 SQL Server 和 SQL Server 之间轻松使用它。关键是进入高级选项(类似于 Management Studio 向导)并选择 SQL Server。稍后当系统提示您选择目标系统时,请选择您的 2008 安装。

我的数据库中没有 2012 年的特定人工制品,它对我来说工作得非常顺利。

于 2014-01-26T18:45:20.830 回答