【问题标题】:Copy Tables and FileGroups from old database to new database将旧数据库中的表和文件组复制到新数据库
【发布时间】:2019-12-02 18:44:51
【问题描述】:

在 SQL Server 2017 中使用 SSMS,我需要将一组表从旧数据库复制到同一服务器(我的本地主机)上的新数据库中。问题是在遗留数据库中,当我编写一些表的创建脚本时,它们是在文件组上创建的:

CREATE TABLE [dbo].[Foobar](
    [FoobarId] [int] IDENTITY(1,1) NOT NULL,
    [OtherColumn] [varchar](100) NOT NULL) ON [AdvantagePrimary]

当我运行脚本时,我当然会得到:

指定的文件组“AdvantagePrimary”无效。

有大约 100 多个表和 14 个文件组我正在编写脚本到新数据库(我需要所有架构以及表约束、索引、触发器等)。

所以我的问题是......是否可以复制(使用脚本或其他方式)表和文件组?这里接受的答案(Is it possible to copy a filegroup from one database to another?)似乎说“不。你是 SOL。”我希望他是错的。

我知道这是一个远射,但我尝试了这个:

INSERT INTO  NewDatabase.sys.filegroups
SELECT * FROM LegacyDatabase.sys.filegroups

得到:

不允许对系统目录进行临时更新

有没有简单的方法可以做到这一点?

【问题讨论】:

  • 我没有任何关联,但 redgate 有非常好的和负担得起的工具来做到这一点。获得它们是很少有成本效益的。
  • @Hogan 好的,谢谢。我会探索并向老板提出案例:)
  • @Hogan,谢谢。我已经下载了免费样本。它生成的脚本中有一些错误。而且我没有看到如何复制文件组。
  • 我从来没有发现他们有错误——只是不知道如何使用这个工具。支持是超级响应的,如果有一个 SQL Server 功能它不会复制我相信他们会解释。

标签: sql sql-server ssms sql-server-2017


【解决方案1】:

我最终只是在目标数据库中手动创建文件组。他们只有14个,所以还不错。在此处找到有关如何执行此操作的说明:

https://codingsight.com/moving-existing-table-from-primary-filegroup-to-different-filegroup/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-20
    • 1970-01-01
    • 2012-01-07
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多