【问题标题】:Create Database in SQL Server 2012, Script and Use in 2008?在 SQL Server 2012 中创建数据库,在 2008 年编写和使用?
【发布时间】:2012-05-05 10:29:02
【问题描述】:

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

【问题讨论】:

  • 从 2008 年开始并迁移到 2012 年可能会更安全。
  • 我问的唯一原因是我安装了带有 SQL Server 2012 的 Windows Server 8 Beta 版,并希望从外部设置对 SQL 的访问,以便我可以在课堂上处理项目。这样,我和我的项目合作伙伴都将拥有最新的数据库来使用,而不必来回传递数据库的副本并尝试将它与我们的每个更改始终合并在一起。最后,数据库必须能够附加到 2008 版本。而且我宁愿不卸载/重新安装 2008 来执行此操作。

标签: sql-server-2008 sql-server-2012


【解决方案1】:

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

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

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

【讨论】:

  • 太好了,我知道脚本的生成,只是不知道我可以选择输出的版本。这很有帮助。谢谢。
  • 除非您的存储过程具有 2012 特定的语法(例如 FORMAT() 函数),否则无论目标版本如何,向导都会盲目地为您编写脚本,并且不会警告您创建脚本将失败。
  • 更多细节在这里:superuser.com/questions/468578/…
【解决方案2】:

脚本?是的。好吧,让我换个说法:这取决于。只要您的对象不使用任何 2012 特定功能,您就可以使用 Management Studio 或各种第 3 方工具 (I blogged about some options here) 编写架构脚本。许多工具还提供选项(或配套工具)来编写数据脚本。

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

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

所以总的来说,我同意约翰的观点。在版本

【讨论】:

  • 考虑到我无法在 2008 年使用 SSMS 从远程位置创建任何表... :( 在这里卸载/重新安装!
【解决方案3】:

如果您要移动的数据量非常大(千兆字节),那么 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-22
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2012-05-16
    相关资源
    最近更新 更多