在SQL Server 2012中,他们引入了包含数据库。这个功能的真正目的是什么?以前的版本有什么缺点?包含数据库的真正好处是什么
回答
正在开发它们以使系统之间的数据库迁移更容易(包括数据库和SQL Azure上的数据库,他们需要移动以平衡资源)。任何依赖于数据库外部的依赖被认为是一种风险,因为它是额外的脚手架,必须与数据库一起使用 - 容易遗忘,容易出错,容易失去同步。
例如,在迪纳利这些问题都得到解决:
今天,当您将数据库移动到另一台服务器,你还必须迁移在服务器级别的所有SQL登录 - 这可能是一个痛苦特别是当SID不同步时。使用包含的数据库,当数据库备份,分离,镜像,复制等时,与SQL Server登录无关的数据库级用户可以随时随地使用。非常简单。
如果你有归类的数据库从服务器排序规则不同,你可能会发现你有整理的冲突,当你加入或执行与#TEMP表等操作,因为获得创建#TEMP表将继承服务器整理,而不是调用数据库。虽然可以通过在每个列引用上指定COLLATE子句(包含数据库)来解决该问题,但#tempdb会继承调用数据库的排序规则,覆盖服务器排序规则。
THROW()几乎可以归入此类别 - 因为您不再需要使用sys.messages来存储自定义消息。这不像上述两个问题那么常见,但是如果没有要求保持sys.messages同步,它肯定会使迁移到新的服务器更好地工作。这不限于包含的数据库,但它起着相同的作用。
对于不符合“遏制”标准的事情,有一个DMV可以向您显示一些事情列表,如果您将它们移动到另一台服务器,这些事件可能会中断。例如,对三部分或四部分名称的调用。
在未来的版本中,还会解决其他问题。例如:
SQL Server代理是外部依赖项。当您将数据库移动到其他服务器时,引用该数据库的SQL代理作业不会自动随数据库一起移动,您必须确定哪些数据库受到影响并自行编写它们(它不像携带msdb那样简单太)。在未来的SQL Server版本中,我设想(a)每个数据库都能够拥有自己的代理,或者(b)代理将被移至OS级架构,其中一些转换层会告诉您数据库的位置是,而不是必须让代理生活在同一台机器上。当我们谈论Azure,地理位置不同的网络等时,后一个选项会变得复杂。
链接服务器也是外部依赖项。这可以通过数据库级别的链接服务器轻松解决 - 尤其是因为这些仅仅是同义词容器/指针。
还有其他人,但那些是沉重的击球手。
- 1. PLINQ有什么真正的好处?
- 2. 管道上游类型参数的真正好处是什么?
- 3. CUDA是否包含真正的C++库?
- 4. 使用包含类的数据的PrivateClass有什么好处?
- 5. 什么是释放模式的ASP.Net的真正好处
- 6. LIFO的真正含义是什么?
- 7. git checkout的真正含义是什么?
- 8. “malloc_trim(0)”的真正含义是什么?
- 9. CATEGORY_BROWSABLE的真正含义是什么?
- 10. EnumSet的真正含义是什么?
- 11. “application/json”的真正含义是什么
- 12. 隐藏命令的真正好处是什么?
- 13. 在游戏中使用画布的真正好处是什么?
- 14. 真正快速的单表数据库的策略是什么?
- 15. javax.faces.bean包的真正来源是什么?
- 16. 什么是最好的XML数据库?真的比关系型数据库有更好的性能?
- 17. 什么描述@property(.....)最好?那真的有什么好处?
- 18. nosql数据库 - 这些好处是什么?
- 19. C#真正的好处Threadpooling
- 20. DLLMain lpReserved参数的真正含义是什么?
- 21. 什么是真正的pymc
- 22. 真正的1NF是什么?
- 23. 真正的PNG是什么?
- 24. 在流水线函数中包含“return”关键字的好处是什么?
- 25. SQLalchemy数据库列应该包含数据数组的模型是什么?
- 26. 在Git中处理数据库的正确方法是什么?
- 27. 什么是处理数据库的正确方法?
- 28. 什么数据库对非结构化数据有好处
- 29. 为什么包含数据库用户需要坚持安全信息=真
- 30. 什么是真正的数组条件