如果我使用2012创建数据库并且工作并向其添加该信息,如果我之后编写数据库脚本,我是否能够在2008年运行该脚本并使所有内容都运行A.O.K?
答案 0 :(得分:22)
如果您使用的是SQL Management Studio,则可以右键单击数据库名称,然后选择 Tasks→Generate Scripts 。
在这里,您将能够创建脚本来编写架构,数据或架构和数据的脚本,如果单击“高级”按钮,则可以指定要定位的SQL Server版本。
因此,只需选择SQL 2008作为目标服务器,你就应该好了!
答案 1 :(得分:10)
一个脚本?是。好吧,让我重新说一下:这取决于。只要您的对象不使用任何2012特定功能,您就可以使用Management Studio或各种第三方工具(I blogged about some options here)编写模式脚本。许多工具还提供选项(或配套工具)来编写数据脚本。
问题是SQL Server 2012中没有一种非常简单的方法可以识别您可能正在使用2012特定功能的所有位置。例如,我不知道将检查您的数据库的工具,并指出您正在使用FORMAT()
函数,这在SQL Server 2008或2008 R2中不可用。
其他复制数据库的方法 - 备份/恢复,附加/分离,镜像/日志传送等将不起作用。你可以上升(从2005年,2008年或2008年R2)到2012年,但你不能倒退。
总的来说,我同意约翰的观点。在版本< =部署版本上开发更安全。您为什么要在2012年开发部署到2008年?对我来说似乎风险很大。
答案 2 :(得分: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年的特定文物,它对我来说非常顺利。