zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    centos上安装禅道
    BootStrap-Table主子表
    开源项目学习
    javascript字面量
    linux下vi的一些简单的操作
    vuejs 开发中踩到的坑
    leetcode 220. Contains Duplicate III 求一个数组中有没有要求的元素 ---------- java
    leetcode 219. Contains Duplicate II 求一个数组中有没有重复元素 ---------- java
    leetcode 1
    leetcode 217. Contains Duplicate 求一个数组中有没有重复元素 ---------- java
  • 原文地址:https://www.cnblogs.com/SignalTips/p/4039736.html
Copyright © 2011-2022 走看看