如何在SQL Server 2008上编写选定的表和数据的脚本?

SQL Server Management Studio有能力生成脚本。 问题是,它打破了身份列。 目前我找不到此错误的链接,但微软基本上将其作为“function”来声明。

这对于:

  • build立开发或新的testing环境; 和
  • 将生产数据复制回testing或开发。

有没有一个简单的解决scheme,这实际上有效?

Scriptio在SQL Server 2005中运行良好,来自SQL Server MVP Bill Graziano。 看起来你不得不为SQL Server 2008重新编译和重新编译。

如果你正在寻找第三方工具, 红门的SQL比较是伟大的(全面披露 – 我是一个红门的朋友 )。

这两个红门工具非常适合比较数据库之间的差异和编写结构或数据差异的脚本。

Red Gate Sql Compare – 用于结构比较和复制

红门Sql数据比较 – 用于数据比较和复制

他们销售一个包含两种产品的SQL包。

我们已经广泛地使用它们来设置开发数据库并复制变更等等。 您也可以使用“数据比较”来在数据库之间同步数据。

我还没有完全审查这个工具,但看看它。 当我下载它时是免费的(我相信它仍然是)

http://www.ssmstoolspack.com/Features.aspx

这个问题有两个部分。

首先,如何复制/移动具有标识字段的数据?

如果您要在两台或更多台服务器之间定期进行此操作,则需要将身份种子设置为不同。 例如,如果您有两台服务器共享一个包含less量logging的表,则可以设置一个身份种子为1,另一个身份种子为1,000,000。 一台服务器将在1处启动它的标识字段并且向上,另一台在较高的数字处。 当然,你还是要留意这一点,以确保你不会结束重叠的logging。

然后,当您想要将数据从一台服务器复制到另一台服务器时,可以使用SET IDENTITY_INSERT命令在插入前加上引号,如下所示:

http://msdn.microsoft.com/en-us/library/ms188059.aspx

然后,您可以暂时禁用身份字段,以便将数据从一台服务器泵送到另一台服务器。

其次,你如何复制/移动数据?

有很多方法可以做到这一点:

  • SQL Server复制 – 可以自动同步多个服务器之间的数据。 它是内置于产品中的,而且非常灵活,但在后台build立和pipe理却是一件痛苦的事情。 这不是像你正在寻找的同步开发/testing环境。
  • 使用SQL Server Management Studio编写脚本 – 可以工作,但缺乏灵活性,也是后端的手动痛苦。
  • 与第三方产品进行数据/模式比较 – Toad for SQL Server等工具将比较两台服务器之间的模式和数据,并使其同步。 (免责声明:我为蟾蜍的制造商Quest工作。)

如果要在生产和开发/testing之间移动数据,请将生产数据作为另一个数据库名称恢复到您的开发/testing服务器,然后在那里进行数据库同步。 它会更快,它不会影响你的生产框,如果你做错了什么(如同步数据错误的方式),它不会破坏生产。

你有没有尝试微软的数据库发布向导 ?
免责声明:我只使用SQL 2005 …不知道它是否适用于SQL 2008。

嘿,你为什么不试试SQL Server 2008中包含的“导入和导出向导”(开始 – >程序 – > Microsoft SQL Server 2008 – >导入和导出向导)。

select表格时,请确保编辑原点和目的地之间的映射,并检查“启用标识插入”选项。 这将允许你保持你的身份外键不变。