如何创建一个 SQL Server 系统表

8
我正在开发一个使用Entity Framework Code First和迁移的网站。每次主要发布后,我都会复制生产数据并在我的开发环境中设置它。我发现为了使用带有迁移的生产数据副本,必须将旧开发数据库镜像中的__MigrationHistory表复制到生产数据库副本中。
这个方法很好用,但有一个令人烦恼的细节:_MigrationHistory表被视为用户表而不是系统表。只要我记得过滤掉它,这不是一个严重的问题。但我更希望新的__MigrationHistory表像由EF迁移创建的数据库一样成为系统表。
有没有办法可以创建或复制SQL Server表,使其看起来像是系统表?
2个回答

6
使用以下命令将您的表更改为系统对象,这样它就会出现在系统对象中。
EXEC sys.sp_MS_marksystemobject _MigrationHistory

1
据我所知,这不是一个建议的做法。 请查看TechNet文章 如果您担心此类问题,我建议声明一个新模式(例如ETL或Mig),并为该模式分配安全措施。这将有助于将“_MigrationHistory”表与其他用户表分开。
编辑: 在另一个问题中找到了这个,如果您坚持要这样做,可能会有帮助。 StackOverflow

我将此标记为答案,因为它提到了另一个问题的参考,而我无法找到(这个问题可以说是重复的)。我同意使用sp_ms_marksystemobject应该非常谨慎,但我认为在这种情况下使用是合理的。 - Paul Keister

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接