MSSQL为单独数据库创建登录账户

摘要:
当前数据库存在以下问题:1。一些信息将在数据库迁移或部署过程中丢失。当我们将数据库从一个SQL Server实例迁移到另一个时,登录名和工作代理等信息不能一起迁移。由于此信息的特殊用途,SQL Server实例自创建以来一直驻留。在新的SQL Server实例上重新创建这些任务将是一个耗时且容易出错的过程。它独立于SQL Server实例,没有外部依赖关系,并且为授权用户提供了一个自包含的机制。

如果要为一个数据库创建一个独立的账号需要这个数据库为包含数据库

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

创建包含数据库

方法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

将一个非包含数据库转为包含数据库

1、右击该数据库并单击其属性

2. 在“选项”一栏,将包含类型选择为“部分”,最后单击“确认”。

这种方法有时候无法完成转换,那么可以试试使用sql来进行转换

USE [master]
GO
ALTER DATABASE TestNonContainedDB SET CONTAINMENT = PARTIAL
GO

  将数据库转为包含数据库后才可以创建账户和密码

USE DBName
GO

 
CREATE USER [username]      WITH PASSWORD=N'password',  DEFAULT_SCHEMA=[dbo]
GO

创建完毕后就可以使用这个账户链接数据库了,而且当迁移数据库后这个账户也会被跟着迁移走

 引文:https://blog.csdn.net/burgess_liu/article/details/7477470

免责声明:文章转载自《MSSQL为单独数据库创建登录账户》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇分享一个IIS日志分析工具LogParseAutoMapper(三)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# 连接Oracle数据库,免安装oracle客户端

一、方案1 首先下面的内容,有待我的进一步测试和证实。18.12.20 被证实了,还需要安装Oracle客户端,或者本机上安装oracle数据库软件。 18.12.20 1.下载Oracle.ManagedDataAccess.dll 2.添加到C#引用 3.命名空间引用 using Oracle.ManagedDataAccess.Client; 4....

SQL基础之 时间戳

本文转载:http://www.cnblogs.com/liuhh/archive/2011/05/14/2046544.html 一直对时间戳这个概念比较模糊,相信有很多朋友也都会误认为:时间戳是一个时间字段,每次增加数据时,填入当前的时间值。其实这误导了很多朋友。 1.基本概念 时间戳:数据库中自动生成的唯一二进制数字,与时间和日期无关的, 通常...

【SQL server初级】数据库性能优化二:数据库表优化

数据库优化包含以下三部分,数据库自身的优化,数据库表优化,程序操作优化.此文为第二部分   数据库性能优化二:数据库表优化   优化①:设计规范化表,消除数据冗余   数据库范式是确保数据库结构合理,满足各种查询需要、避免数据库操作异常的数据库设计方式。满足范式要求的表,称为规范化表,范式产生于20世纪70年代初,一般表设计满足前三范式就可以,在这里简单...

mongodb启动

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。MongoDB是一款分布式文档数据库,支持类似关型数据库的主从结构,文档以二进制Json形式存储,无锁,无事务,有索引。1. MongoDB的启动与停止 MongoDB的启动之前已经谈过,但是需要注意的MongoDB在启动时有很多可配置的启...

wordpress数据库优化wp_posts表 OPTIMIZE

wordpress数据库优化wp_posts表 对 MySQL 数据记录进行插入、更新或删除时,会占有不同大小的空间,记录就会变成碎片,且留下空闲的空间。就像具有碎片的磁盘,会降低性能,需要整理,因此要优化。 OPTIMIZE TABLE wp_posts;  参考自我爱水煮鱼...

C++连接mysql数据库的两种方法

现在正做一个接口,通过不同的连接字符串操作不同的数据库。要用到mysql数据库,以前没用过这个数据库,用access和sql server比较多。通过网上的一些资料和自己的摸索,大致清楚了C++连接mysql的方法。可以通过2种方法实现。 第一种方法是利用ADO连接, 第二种方法是利用mysql自己的api函数进行连接。 第一种方法可以实现我当前的需求,通...