可以在 sys 架构 SQL Server 2008 中创建表吗?我知道可以将表标记为系统,但不能更改架构。有什么技巧吗?
3 回答
您不能将自己的对象添加到 sys 架构中。
不能在 sys 模式中创建用户定义的对象。
Gail Erickson [MS]
SQL Server 文档团队
此帖子按“原样”提供,不提供任何保证,也不授予任何权利
如果这还不够令人信服,请考虑系统对象存储在资源数据库中,它是只读的:
Resource 数据库是一个只读数据库,其中包含 SQL Server 附带的所有系统对象。SQL Server 系统对象,例如 sys.objects,在物理上持久保存在 Resource 数据库中,但它们在逻辑上出现在每个数据库的 sys 架构中。资源数据库不包含用户数据或用户元数据。
- 来源:msdn - 资源数据库
如果确实存在一些未记录的方法来执行此操作,正如其他人所说,这样做可能不符合您(或您的软件和团队)的最佳利益。我建议退后一步,从另一个角度解决你的问题。也许某种模拟设置?
这对我有用:
我使用 sql server 2012。不确定它是否适用于旧版本。
执行sp_addextendedproperty N'microsoft_database_tools_support', N'migration log', N'schema', N'dbo', N'table', N'__MigrationHistory'
有什么建议么 ?
您已经要求一种将对象标记为系统对象的方法。有一个未记录的程序就是sp_ms_marksystemobject
这样做的。这有一些合法的用途,但在大多数情况下,您尝试做的事情会更好地完成而不会导致这种情况。简而言之,在使用它之前,请仔细权衡您的选择。你已经被预先警告过了。