SQL Server数据库时出现孤立用户权限问题的解决办
--自己很愚蠢的做法,以为直接删除数据库用户名,再从新创建用户登录名和数据库用户名。
--自己以为可以直接创建与之原先一样的数据库登录名就可以
--但这些操作是不起作用的
--原因
--当映射孤立用户时,主从数据库中的SID将分配给孤立用户,所以每次一个数据库备附加或者还原时,--SID在SQL Server 登录名和数据库用户之间都存在差异。
--预先了解有几个孤立用户
use adventureWorks
go
sp_change_users_login @Action='Report'
go
--第一步:新建 数据库登录名(可以与数据库用户名相同,也可以不同。)
--要首先新建数据登录名,是因为往往备份还原的数据只会含有数据库用户名,而不含有数据库登录名
--'TestUser2' 是你将要创建的数据库登录名,'pwd'为数据库登录密码
use adventureWorks
exec sp_change_users_login 'Auto_Fix','TestUser2',null,'pwd'
--第二步:把数据库用户名映射到数据库登录名上
--(1)如果用户名和登录名相同
use adventureWorks
go
exec sp_change_users_login 'Auto_Fix','TestUser2'
--(2)如果用户名和登录名不同
--exec sp_change_users_login @Action='update_one',@UserNamePattern='TestUser1',@LoginName='TestUser1'
--第三步:检查是否映射成功
/*
这个两个语句 是比较 登录名.SID与用户名.SID
登录名.SID==用户名.SID ==>我们的操作就成功了。
登录名.SID!=用户名.SID 任然是孤立用户
*/
--SQL Server 登录名 的SID
select name,sid from sys.syslogins where [name]='TestUser2'
--SQL Server 数据库用户名 的SID
select name,sid from AdventureWorks..sysusers where name='TestUser2'
相关文档:
SQL Server中的数据库都是由一或多个数据文件以及一或多个事务日志文件组成的。
顾名思意,数据文件主要存储数据库的数据,包括数据库内容结构,数据页,索引页等等。那么事务日志到底是干什么的呢?它主要是用来保存数据库修改记录的,如下图:
SQL Server的工作原理为什么这样呢?为什么不把数据立刻写入数据文件呢?原 ......
所测试环境为:Ms sqlserver 2008,visual studio 2008
测试数据为10万条
Linq方式 代码:
/// <summary>
/// Linq 方式
/// </summary>
public static void Linq_insert()
{
DataClassesDataContext dataContext = new DataClassesDataContext();
......
处理SQL Server数据库中的孤立用户(图)
把数据库从一个服务器实例附加和恢复到另一个实例中是数据库管理员执行的常见的任务。附加或者恢复一个数据库之后,之前在数据库中创建和配置的登录名已经不能访问了。这个问题最常见的症状是应用程序会遇到登录失败的错误,或者是当你试着把登录名添加到数据库中时,你可能会得到一 ......