博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL Server 数据库身份认证以及包含数据库
阅读量:6137 次
发布时间:2019-06-21

本文共 1716 字,大约阅读时间需要 5 分钟。

首先分为    认证与  身份认证。
  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.增加了迁移数据库的复杂性。不能仅仅简单地迁移用户数据数据库和程序。因为还有一部分和应用相关的对象遗漏在用户数据库之外,其中包括登入名。在迁移应用的时候,登入名需被单独的从老的环境中提取出来,在部署到新的环境上。
  前提是数据库兼容级别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;
最新内容请见作者的GitHub页:http://qaseven.github.io/

转载地址:http://warua.baihongyu.com/

你可能感兴趣的文章
Extjs4.1.x 框架搭建 采用Application动态按需加载MVC各模块
查看>>
Silverlight 如何手动打包xap
查看>>
建筑电气暖通给排水协作流程
查看>>
JavaScript面向对象编程深入分析(2)
查看>>
linux 编码转换
查看>>
POJ-2287 Tian Ji -- The Horse Racing 贪心规则在动态规划中的应用 Or 纯贪心
查看>>
Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月7日-1月14日)
查看>>
关于C#导出 文本文件
查看>>
使用native 查询时,对特殊字符的处理。
查看>>
maclean liu的oracle学习经历--长篇连载
查看>>
ECSHOP调用指定分类的文章列表
查看>>
分享:动态库的链接和链接选项-L,-rpath-link,-rpath
查看>>
阿里云企业邮箱 在Foxmail 7.0上POP3/IMAP协议设置方法
查看>>
Javascript一些小细节
查看>>
简化 MongoDB 关联运算
查看>>
大数据成神之路
查看>>
LeetCode 312. Burst Balloons
查看>>
canvas学习总结
查看>>
Javascript的if判断
查看>>
spring cloud gateway 源码解析(3)记录请求参数及返回的json
查看>>