SQL Server 2012中包含的数据库(Contained Database)探索

SQL Server 2012引入了包含数据库(Contained Database),解决了与当前(非包含)数据库关联的某些问题和复杂性。包含的数据库不依赖于其所属服务器相关的配置、管理、排序规则和安全认证信息,因此可以在数据库实例间方便的移动和部署,使数据库的应用和实例分离开来,也使研发能够更好的集中在应用和功能本身。下面将从什么是包含数据库,如何创建包含数据库,如何将数据库转换为部分包含的数据库,如何将用户迁移为包含的数据库用户,以及如何备份和还原包含数据库等几个方面来熟悉一下2012的这个新特性。

  • 当前(非包含)的数据库所面临的问题
    在描述什么是包含数据库之前,先了解一下为什么会出现包含数据库。当前的数据库有一些问题,如下:
    1、在数据库迁移或部署的过程中一些信息会丢失
         当我们将数据库从一个SQL Server实例迁移到另一个实例是,诸如登陆、工作代理等信息将不能一起被迁移。因为这些信息有特殊用途,自创建后就常驻SQL Server实例。在新的SQL Server实例上重新创建这些任务将是一个耗时、易出错的过程。
    2、从应用开发转向部署
         在Server上部署应用时或许会遇到一些障碍,因为很有可能环境不匹配。例如,创建login时可能没权限,命令行实用工具(如“xp_cmdshell”)或许是禁用的,应用里用到的数据库排序规则或许和Server初始指定的(也可能是默认的)排序规则不同。
    3、应用管理的安全考量
         管理和维护单个数据库比较困难,因为login、job agent等信息是跨数据库实例访问的,因此,允许用户对整个实例授权将引起对其他数据库的不必要访问,进而导致安全隐患。
  • 什么是包含的数据库
    义如其名,它是一种自我包含的数据库。例如,它自带所有创建数据库时所需要的数据库设置及元数据信息。它独立于SQL Server实例,没有外部依赖关系,自带授权用户的自我包含机制。由于它独立于数据库实例,就使得在部署到不同服务器时数据库的排序规则不再是一个问题。
    一个包含的数据库,保留了所有数据库里必要信息和对象,如表、函数、限制、架构、类型等。它也存有所有数据库里的应用级对象,如登陆、代理作业、系统设置、链接服务器信息等。
    这种数据库带给我们的好处是,可以轻松地从一台Server搬移到另一台,并且不需要做任何额外配置就可以立即使用它,因为他们没有任何外部的依赖。
  • 4步创建包含的数据库
    步骤1、启用包含的数据库
    方法1: 使用 Management Studio 启用包含的数据库
    1.在对象资源管理器中,右击服务器名称,然后单击“属性”

    2.在“高级”页面上的“包含”部分中,将“启用包含的数据库”选项设置为“True”(默认为“False”)。

    3.单击“确定”。
    方法2: 使用T-SQL启用包含的数据库
    --Enabled Advanced options
    sp_configure 'show advanced', 1;
    RECONFIGURE WITH OVERRIDE;
    go
    --Enabled Database Containment
    sp_configure 'contained database authentication', 1;
    RECONFIGURE WITH OVERRIDE;
    go

    步骤2、创建一个数据库,并将它的包含类型设置为“部分”
    1. 创建一个名为“TestContainedDB”的数据库&#
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值