SQL Server 登录名使用映射到 SQL Server 登录名的数据库用户访问各个数据库。此规则有两种例外情况:
- guest 帐户。
这个帐户在数据库中启用后,能够使未映射到数据库用户的 SQL Server 登录名作为 guest 用户进入数据库。
- Microsoft Windows 组成员身份。
如果某 Windows 用户是 Windows 组的成员,并且此组也是数据库中的用户,则基于该 Windows 用户创建的 SQL Server 登录名可以进入数据库。
有关 SQL Server 登录名与数据库用户的映射关系的信息存储在数据库中。其中包括数据库用户的名称以及对应 SQL Server 登录名的 SID。该数据库用户的权限用于在数据库中进行授权。
在服务器实例上未定义或错误定义了其相应 SQL Server 登录名的数据库用户无法登录到实例。这样的用户被称为此服务器实例上的数据库的“孤立用户”。如果删除了对应的 SQL Server 登录名,则数据库用户可能会变为孤立用户。另外,在数据库还原或附加到 SQL Server 的其他实例之后,数据库用户也可能变为孤立用户。如果未在新服务器实例中提供数据库用户映射到的 SID,则该用户可能变为孤立用户。
简单的说孤立用户,就是数据库中有这个用户,但是没有对应的登录用户
检测孤立用户
USE <database_name>;
GO;
sp_change_users_login @Action='Report';
GO;
这样找到的会不包含windows 孤立账号,所以是不完整的,根据孤立用户的特性可以根据以下语句找到所有的
SELECT name
FROM sys.database_principals DP WITH(NOLOCK)
WHERE NOT EXISTS(
SELECT *
FROM sys.server_principals SP WITH(NOLOCK)
WHERE SP.sid = DP.sid
)
AND DP.type IN(
'S', 'G', 'U'
)
AND DP.sid IS NOT NULL
AND DP.sid <> 0x00
处理孤立账号
1、可以使用sp_change_users_login 修复
以下示例显示如何使用Auto_Fix将现有用户映射到同名的登录名,以及如何在不存在登录名Mary的情况下,创建密码为B3r12-3x$098f6的SQLServer登录名Mary。
SEAdventureWorks;
GO
EXECsp_change_users_login'Auto_Fix','Mary',NULL,'B3r12-3x$098f6';
GO
需要注意的是
使用 sp_change_users_login 将当前数据库中的数据库用户链接到 SQL Server 登录名。如果用户登录名已更改,则使用 sp_change_users_login 将用户链接到新的登录,而不会丢失用户的权限。新的 login 不能为 sa,而 user 不能为 dbo、guest 或 INFORMATION_SCHEMA 用户。
sp_change_users_login 不能用于将数据库用户映射到 Windows 级主体、证书或非对称密钥。
sp_change_users_login 不能与通过 Windows 主体创建的 SQL Server 登录名一起使用,也不能与使用 CREATE USER WITHOUT LOGIN 创建的用户一起使用。
不能在用户定义的事务中执行 sp_change_users_login。
2、 如果这些账号没有用了,可以考虑直接删除,附上一个快速删除的代码
删除当前库的所有孤立用户
declare @s varchar(1000)
if OBJECT_ID('tempdb..#tb') is not null drop table #tb
create table #tb(username varchar(50))
insert into #tb
SELECT name
FROM sys.database_principals DP WITH(NOLOCK)
WHERE NOT EXISTS(
SELECT *
FROM sys.server_principals SP WITH(NOLOCK)
WHERE SP.sid = DP.sid
)
AND DP.type IN(
'S', 'G', 'U'
)
AND DP.sid IS NOT NULL
AND DP.sid <> 0x00
if @@ROWCOUNT >0
begin
select @s=ISNULL(@s,'')+'drop user ['+username+'];'+CHAR(13)from #tb
--print @s
exec (@s)
end
drop table #tb
删除所有数据库的孤立用户
exec sp_msforeachdb
'use [?]
declare @s varchar(1000)
if OBJECT_ID(''tempdb..#tb'') is not null drop table #tb
create table #tb(username varchar(50))
insert into #tb SELECT name
FROM sys.database_principals DP WITH(NOLOCK)
WHERE NOT EXISTS(
SELECT *
FROM sys.server_principals SP WITH(NOLOCK)
WHERE SP.sid = DP.sid
)
AND DP.type IN(
''S'', ''G'', ''U''
)
AND DP.sid IS NOT NULL
AND DP.sid <> 0x00 ;
if @@ROWCOUNT >0
begin
select @s=ISNULL(@s,'''')+''drop user [''+username+''];''+CHAR(13)from #tb
use [?]
--print @s
exec (@s)
end
drop table #tb
'
分享到:
相关推荐
在进行SQL Server数据库迁移时,经常会遇到一个棘手的问题:迁移完成后,部分用户无法与原有的登录名相对应,导致这些用户成为“孤立用户”。这种情况下,用户虽然存在于数据库中,但无法正常访问数据库资源。本文将...
在进行SQL Server数据库的备份与恢复操作时,经常会出现一个棘手的问题:原本数据库中的登录名在恢复到另一台服务器后消失不见,导致原本关联的用户变成孤立用户(即没有对应的登录名)。这种情况通常发生在将数据从...
### SQL还原数据库后孤立用户问题处理 #### 一、什么是孤立账户? 在SQL Server中,孤立账户是指在某个数据库中有用户记录(存在于该数据库的`sysusers`表中),但在`master`数据库的`syslogins`表中却没有对应...
为了赋予自己 sysadmin 权限,可以采取以下步骤:首先以单用户模式启动 SqlServer,然后通过 Sqlcmd 工具执行系统存储过程 `sp_addsrvrolemember`。具体命令如下: ```sql EXEC sp_addsrvrolemember '[Windows登录...
这通常发生在将SQL Server数据库从一个服务器备份并恢复到另一个服务器的过程中,因为备份和恢复操作可能没有正确处理原有的用户和登录关系,导致了孤立用户的现象。 描述进一步解释了问题发生的场景,即在分配...
2. **自动修复所有孤立用户**:使用`'Auto_Fix'`参数,可以让SQL Server自动尝试将所有孤立用户与服务器上的登录进行匹配和关联。然而,这种方法存在风险,因为基于名称的匹配可能不准确,导致用户权限错配。 3. **...
在迁移服务器时,如果出现孤立用户,可以使用`fix_orphan_user`脚本或`LoneUser`过程来处理。 8. **管理链接服务器**:`sp_helplinkedsrvlogin`查看链接服务器的登录信息,`sp_helpremotelogin`则显示远程服务器的...
在程序的全局请求处理中,如Global.asax文件,可以利用Application_BeginRequest事件来检查用户输入,如果检测到敏感关键字,则可以重定向用户到一个错误页面。 ```csharp void Application_BeginRequest(Object ...
文章中还提到了几项参考文献,涉及SQL Server数据库在地震前兆台网中心的应用、基于隐马尔可夫模型(HMM)的数据库异常检测系统设计与实现以及数据库安全性控制的研究等内容,为数据库安全监控的研究提供了理论和...
外键约束在SQL Server中不仅用于保证引用完整性,还能够防止用户在主表中没有匹配行时,在相关表中添加或更改数据,以及防止在主表中更改值导致相关表出现孤立行的情况。 除了数据完整性约束外,物联网技术的应用...
如果遇到孤立用户问题,可以使用`fix_orphan_user`脚本或`LoneUser`过程。 7. **链接服务器和远程登录**:`sp_helplinkedsrvlogin`查看链接服务器的登录信息,`sp_helpremotelogin`用于查看远程数据库的登录信息。 ...
可以使用SQL Server或其他关系型数据库,设计合适的数据表结构,存储和检索指纹模板及对应的用户信息。 六、安全性与隐私保护 在实际应用中,必须考虑到指纹数据的安全性和用户隐私。模板加密技术和去标识化处理是...
偏差分析也称孤立点检测,旨在找出数据集中与常规行为有明显不同的特殊事例。偏差分析可以用于信用卡欺诈行为监测、网络入侵检测和劣质产品分析等。 在实操方面,文章提到了Microsoft SQL Server 2005,这是一个...
- **结构化查询语言(SQL)**:作为访问和处理数据库的标准语言,SQL的出现极大地简化了数据操作过程,使得非专业人员也能够轻松地管理数据。 - **数据库巨人的诞生**:诸如Oracle、IBM DB2等数据库产品相继推出,它们...
该系统采用了B/S架构,前端通过Web页面与用户交互,后端通过数据库处理交易数据。为了确保系统的稳定性和可靠性,测试团队制定了以下测试策略: 1. **负载测试**:模拟不同数量的用户同时访问系统,监测系统响应...
4. 噪声数据处理方法包括数据清洗、数据平滑和异常值检测,这些方法有助于提高数据质量。 5. 数值归约的常见方法包括直方图、聚类、主成分分析(PCA)、线性降维和对数模型等,它们旨在减少数据维度,降低存储和...
以上只是部分知识点,数据挖掘考试题库可能还会涵盖更多细节,如聚类算法(K-means、DBSCAN等)、关联规则挖掘算法(Apriori、FP-Growth等)、决策树算法(ID3、C4.5、CART等)、SQL Server 2000的OLAP组件...
- 全方位数据库审计:支持多种主流数据库系统,如Oracle、SQL Server、MySQL等,以及各种操作系统平台,提供跨平台的审计能力。 - 实时回放数据库操作:通过记录操作序列,可以实时或事后回放操作过程,帮助快速定位...
本文将详细介绍一种适用于BS(Browser/Server)架构的电子商务平台的Web测试流程,旨在全面覆盖需求,并确保系统的质量。 #### 二、Web测试概述 Web测试是一种针对基于Web的应用程序进行的质量控制过程。它不仅...