理解和处理sql server数据库中的孤立用户--

理解和处理sql server数据库中的孤立用户--

ID:20187828

大小:51.50 KB

页数:3页

时间:2018-10-08

理解和处理sql server数据库中的孤立用户--_第1页
理解和处理sql server数据库中的孤立用户--_第2页
理解和处理sql server数据库中的孤立用户--_第3页
资源描述:

《理解和处理sql server数据库中的孤立用户--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、理解和处理SQLServer数据库中的孤立用户>>  问题  把数据库从一个服务器实例附加和恢复到另一个实例中是数据库管理员执行的常见的任务。附加或者恢复一个数据库之后,之前在数据库中创建和配置的登录名已经不能访问了。这个问题最常见的症状是应用程序会遇到登录失败的错误,或者是当你试着把登录名添加到数据库中时,你可能会得到一个信息比如这个用户已经在这个数据库中存在。当你执行一个附加或者一个恢复时,这是很常见的一种情况,那么你如何解决这个问题呢?  专家解答  当数据库从一个服务器迁移到另一个服务器时,存储在主从数据库中的登录名ids与存储在每个用户数据库中的登录名ids不符合。

2、正如上面所说的,附加或恢复一个数据库之后你会看到的一些错误包括:  Msg229,Level14,State1  %spermissiondeniedonobject%.*s,database%.*s,oeasSQLServerLogIn,SIDasSQLServerSIDFROMsys.syslogins  sysusers  e]='TestUser3'  GO  以下的结果表明SQLServer登录名中的SID和数据库用户id的SID是不一样的,这也表明了这正是导致问题出现的原因。  现在我们对这个问题有了更深入的了解,现在是时候利用一些有用的命令去分析

3、和解决问题了。  我已经用以上四个用户把AdventureWorks数据库从一个实例还原到另一个实例上。现在为了分析在我的还原数据库中有多少个孤立用户,我将运行以下的T-SQL命令,这些命令将产生所有孤立用户的列表并且在这个例子中所有的用户都是在孤立的。  用来产生孤立用户列表的命令  USEadventureWorks  GO12下一页>>>>这篇文章来自..,。sp_change_users_loginAction='Report'  GO  现在我们已经有了孤立用户的列表,我们可以开始着手解决这个问题。为了克服这个问题,你需要把用户(来自sysusers

4、表)的SIDs链接到主从数据库的有效登录名中。下面的命令TestUser1指定的数据库用户重新映射到TestUser1指定的服务器登录名账户。  用来映射一个孤立用户的命令  USEAdventureePattern='TestUser1',  LoginName='TestUser1'  GO  或者如果你确定SQLServer登录名和映射的数据库孤立用户名一样,那么接着你可以使用更短的命令,比如以下TestUser2的例子。  用来映射一个孤立用户的命令  EXECsp_change_users_login'Auto_Fix'

5、;,'TestUser2'  GO  这两种命令都可以把用户映射到登录名,并且它们将不再是孤立的。  如果一个登录名不存在,你必须在做映射之前先创建这个登录名。创建登录名的一种便捷方式是使用以下将会创建登录名接着把登录名映射到用户的命令。  用来把一个孤立用户映射到一个还未出现但是将要创建的登录名的命令  EXECsp_change_users_login'Auto_Fix','TestUser3',null,'pwd'  GO  总结应用的T-SQL  在以上过程中,使用了存储过程sp_change_users

6、_login。变量[Action]指定了这个存储过程的准确用法。它接受像varchar(10)这样的参数并且有以下的一种值:  l如果参数是Auto_Fix,那么数据库用户从相同名称的SQLServer登录名映射。如果这个登录名没有显示,它也可能会产生登录名。  l如果参数是Report,它列出孤立用户和它们的安全标识符(SID)。  l如果参数是Update_One,它从指定的数据库链接到现有的SQLServer登录名。  一些注意事项  lsp_change_users_login要求是db_owner固定数据库角色的组成成员,只有成为db_owner固定数据库角色的组成

7、成员才能指定Auto_Fix选项。  l当映射孤立用户时,主从数据库中的SID将分配给孤立用户,所以每次一个数据库备附加或者还原时,SID在SQLServer登录名和数据库用户之间都存在差异。  l如果你有映射到一个数据库用户的不同的Server登录名,那么不要使用Auto_Fix命令来链接。  l如果相应的SQLServer登录名被删除,那么一个用户也可能成为孤立的。  l虽然这是很显而易见的,但是还是有必要提出来,在重新链接之后,SQLServer登录名的密码可以由数据库用户所使用。上一页12>>>

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。