SQL Server 数据库身份认证以及包含数据库
首先分为SQL Server 认证与Windows 身份认证。
SQL Server 认证可以运行以下语句来查询
1 select * from sys.sql_logins
管理员可以直接修改密码,但无法知晓原有密码原文,SQL Server使用混淆算法来保护安全性不如Windows 身份认证,
Windows认证模式
首先分为本机账号与域账号
SQL Server 将认证和授权分散给了不同的对象来完成,SQL Server 的“登入名”(Login)用于认证,连接SQL Server 的SQL或者Windows 账户必须在SQL Server中有对应的登入名才能成功登入。
而每个数据库中的“用户”(User)被授予了操作数据库中对象的相应权限。登入名和用户之间通过SID联系起来,于是登入SQL Server 的登入名也获得了操作数据库的相应权限。
这个机制带来以下两个问题:
1.提高了高可用解决方案的维护成本。msdb(系统数据库)无法被镜像。类似制作数据库镜像系统,就需同时在主体和镜像服务器上的添加同样的用户名密码,否则发生故障转移,镜像服务就无法使用新的登入名进行登入。另外,在镜像服务器上添加登入名时要确保和主体服务器上的登入名使用相同的SID,否则就会破坏登入名到数据库用户之间的对应关系。成为所谓的孤立账户。
2.增加了迁移数据库的复杂性。不能仅仅简单地迁移用户数据数据库和程序。因为还有一部分和应用相关的对象遗漏在用户数据库之外,其中包括登入名。在迁移应用的时候,登入名需被单独的从老的环境中提取出来,在部署到新的环境上。
孤立账户解决参考以下链接
http://www.cnblogs.com/kerrycode/p/3465547.html
前提是数据库兼容级别110以上,即2012以上。包含数据库创建。。
1 EXEC sys.sp_configure N'contained database authentication', N'1' 2 GO 3 RECONFIGURE WITH OVERRIDE 4 GO
修改[AdventureWorks2012]为包含数据库
1 USE [master] 2 GO 3 ALTER DATABASE [AdventureWorks2012] SET CONTAINMENT = PARTIAL WITH NO_WAIT 4 GO
查询实例中所有的包含数据库
1 use master 2 select * from sys.databases 3 where containment >0
将现有的数据库用户改为包含数据库用户
1 USE [AdventureWorks2012] 2 GO 3 DECLARE @username SYSNAME; 4 DECLARE user_cursor CURSOR 5 FOR 6 SELECT dp.name 7 FROM sys.database_principals AS dp 8 JOIN sys.server_principals AS sp ON dp.sid = sp.sid 9 WHERE dp.authentication_type = 1 10 AND sp.is_disabled = 0; 11 OPEN user_cursor 12 FETCH NEXT FROM user_cursor INTO @username 13 WHILE @@FETCH_STATUS = 0 14 BEGIN 15 EXECUTE sp_migrate_user_to_contained @username = @username, 16 @rename = N'keep_name', @disablelogin = N'disable_login'; 17 FETCH NEXT FROM user_cursor INTO @username 18 END 19 CLOSE user_cursor; 20 DEALLOCATE user_cursor;
转载于:https://www.cnblogs.com/SignalTips/p/4039736.html
SQL Server 数据库身份认证以及包含数据库相关推荐
- SQL Server 2008 Analysis Services 多维数据库一步一步从入门到精通
SQL Server 2008 Analysis Services 多维数据库一步一步从入门到精通(一) 创建 Analysis Services 项目(图) 在开始之前,我的电脑上已经完整的安装了S ...
- SQL Server 审核(Audit)-- 创建数据库级别的审核
SQL Server 审核(Audit)-- 创建数据库级别的审核 任务1:创建审核 步骤1:打开SSMS,登录到指定的实例,展开"Security","Audits&q ...
- SQL Server之备份和还原系统数据库
系统数据库是管理和维护SQL Server所必须的数据库,对服务器实例的运行至关重要.每次进行大量更新后必须备份多个系统数据库,包括master.model.msdb,备份这些系统数据库,就可以在发生 ...
- 使用SQL Server Management Studio 创建作业备份数据库
在项目中,经常需要备份数据库,如果能做到只需点个按钮("开始备份数据库"按钮),然后什么都不管,数据库就自动备份好了,或者服务器上的数据库隔一段时间自动备份一次,那该多好啊. Sq ...
- 解决SQL Server管理器无法连接远程数据库Error: 1326错误
解决SQL Server管理器无法连接远程数据库Error: 1326错误 我们在在使用SQL Server时都会遇到使用SQL Server Management Studio无法连接远程数据库实例 ...
- SQL Server 2005两本教程案例数据库
SQL Server 2005两本教程案例数据库,包括: school学校数据库 business商务数据库 CPXS产品销售数据库 family家族数据库 sample商务数据库2 bbs论坛数据库 ...
- SQL Server整合–在单个SQL Server实例上托管多个数据库
介绍 (Introduction) Consolidating SQL Server databases and instances is a practice which, under certai ...
- 关于SQL server导入.mdf文件显示附加数据库时出错。有关详细信息,请单击“消息”列中的超链接
关于SQL server导入.mdf文件显示附加数据库时出错.有关详细信息,请单击"消息"列中的超链接 问题原因 看了一下,应该是从别人那边拷过来的数据库文件没有本地操作系统的权限 ...
- SQL Server学习之路:建立数据库、建立表
SQL Server学习之路:建立数据库.建立表 1.前言 配置是win10+SQL Server 2012,使用的GUI管理工具是SQL Server 2012自带的SQL Server Manag ...
最新文章
- 2021-2027年中国视频监控设备行业市场需求预测与投资战略规划分析报告
- qt 删除文件夹_Qt 贪吃蛇制作(含源码)
- tensorflow_yolo-v3 Intel Realsense 视频流处理模块 opencv.videocapture()
- 软测homework2
- 使用ueditor实现多图片上传案例
- CheckList 如何梳理可减少上线的验证时间(总结篇)
- Java LinkedList void clear()方法与示例
- vue base64图片不显示_技巧 | word中插入的图片显示不完整怎么办?
- 数据库实例服务被误删后
- 盒子模型(悬挂式布局)
- ERROR: No matching distribution found for numpy
- 爷青结?诺基亚贝尔实验室官宣转让Plan 9版权!
- [转载] 把数据对象转成字符串_python入门基础培训教程,Python 字符串学习
- web前端开发最佳实践_Web开发人员和设计师的最佳黑色星期五优惠
- 漫威蜘蛛侠Mac动态壁纸
- DS1302+LCD1602=万年历
- 数列收敛,极限值唯一
- matlab逆变器原理,MATLAB中的单相全桥逆变器电路建模与仿真
- 全球云服务商排名情况及国内云主机市场占有率份额排名对比
- css3边框交替动画_用纯CSS3制作的效果非常炫酷的元素边框线条动画特效