3

我正在使用 Microsoft Sql Server Management Studio。我目前有一个包含数据的现有数据库,我将其称为 DatabaseProd 我还有第二个数据库,其中包含用于测试的数据,因此数据不完全正确也不是最新的。我将把这个数据库称为DatabaseDev。

但是 DatabaseDev 现在包含新添加的表和新添加的列等。

我想将这个新模式从 DatabaseDev 复制到 DatabaseProd,同时保留 DatabaseProd 的数据。

前任。DatabaseProd 包含 2 个表 TableA 与列 ID 和名称 TableB 与列 ID 和 jobName 并且这些表包含我想保留的数据

DatabaseDev 包含 3 个表 TableA 与列 ID ,名称和 phoneNum 表 B 与列 ID 和 jobName 表 C 与列 ID 和文档,这些表包含我不需要的数据

将 DatabaseDev Schema 复制到 DatabaseProd,但保留 DatabaseProd 中的数据,因此复制后的 DatabaseProd 看起来像这个 TableA 具有列 ID 、名称和 phoneNum TableB 具有列 ID 和 jobName TableC 具有列 ID 和文档 但是这些表将包含它的原始数据。

那可能吗?

谢谢

4

3 回答 3

3

您可以使用Red-Gate SQL Compare,这将允许您比较两个数据库并生成一个脚本以在源数据库上运行。您必须为许可证付费,但您将获得14-day trial period.

这个工具,连同数据比较和两个我一直坚持的新角色工具,因为它们加快了开发时间,并最大限度地减少了人为错误。

此外,使用 SQL 比较时的一个很好的提示- 如果您需要生成一个rollback script,那么您可以编辑项目(在创建您的 之后rollout script),切换源和目标,这将创建一个脚本,它将模式返回到它的原始说明是否rollout script失败。但是,执行此操作时要非常小心,不要选择与 sql compare 同步,而是生成一个脚本,请参见 image。我无法上传图片,但我已在此处链接到一张图片 - 您可以看到使用 SQL 比较选择生成脚本/同步的两个选项。

于 2013-09-18T14:26:54.280 回答
0

是的,您可以只生成一个仅用于模式的数据库脚本,不会将任何数据添加到该脚本中。

此外,您只需在创建或生成数据库脚本时选择第三个表并将该脚本运行到您的生产服务器数据库,它将创建一个没有任何数据的新表(在您的情况下为表 3)。

有关如何创建数据库脚本的更多信息,请点击以下链接:

http://blog.sqlauthority.com/2011/05/07/sql-server-2008-2008-r2-create-script-to-copy-database-schema-and-all-the-objects-data-schema-存储过程函数触发器表视图约束和所有其他数据库对象/

于 2013-09-18T13:50:20.903 回答
0

您需要一个 ALTER TABLE 语句

ALTER TABLE tableA ADD PhoneNum Varchar(10) --Insert variable of choice here

看起来 TableB 没有变化

添加表C

CREATE TABLE TableC (ColumnID int, Document Varvhar(50))

您是否需要复制约束、索引或触发器?

于 2013-09-18T14:21:28.933 回答