帮助中心 >  技术知识库 >  数据库 >  相关技术支持 >  sqlserver搭建网站遇到问题“对象名无效”

sqlserver搭建网站遇到问题“对象名无效”

2023-03-24 17:20:17 3157

在进行站点搬迁时,我们通常会把sql server数据库备份成.bak文件,再到新的sql server环境下还原。在网站搭建完成后访问时可能会出现“对象名无效”的错误,如下图:

image.png 

以下是sql server出现报错的原因以及解决方法:

这其实是sql server孤立用户的问题。

image.png 

如上图所示,a0805120154为恢复完的数据库。该数据库的很多表是用户a0805120154建立的,但是当我们恢复sql server数据库后,a0805120154用户此时就成了孤立用户没有与之对应的sql server用户名,哪怕你建立了一个a0805120154登录用户名,而且是以前的用户密码,用该用户登录后同样没办法操作以前属于a0805120154的用户表。

比如在sql server查询语句中访问上图中的三个视图时,就会提示“对象名无效”

这个问题有两种办法解决。

先说解决的前提条件。 首先,如上还原sql server数据库a0805120154。

数据库恢复后,就产生了孤立用户a0805120154 然后,用sa用户或者具有DBA权限的sql server用户登录,创建一个a0805120154数据库登录用户,密码随便设置,也可以和以前的保持一致。

image.png

我们用它来对应孤立的a0805120154用户,使登录用户和sql server数据库的孤立用户对应起来,其实我们建立了同样名称的数据库登录用户后,数据库中的表我们照样不能使用,因为sid的不同,就是系统登录表和数据库用户表中的用户名相同, 单是sid字段数据库中的还是以前旧系统的sid值,所以我们就要把它对应成我们新建的。sql server数据库就是靠sid来识别用户的。

这里可以使用sql server存储过程sp_change_users_login。它有三种动作,分别是report,update_one和auto_fix。

运行sp_change_users_login 'report',系统会列出当前数据库的孤立用户数。

image.png 

我们只需要选择当前数据库为a0805120154,然后运行 sp_change_users_login 'update_one','a0805120154','a0805120154' --系统就会提示修复了一个孤立用户。

image.png 

重新打开网站,问题就解决了。

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: