相关文章推荐
有胆有识的作业本  ·  Vue中 ...·  2 年前    · 
叛逆的木瓜  ·  c# - Convert ...·  2 年前    · 
导读 本文主要介绍了SQL server中提示对象名无效的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

产生SQL对象名无效的问题大多原因是由于数据迁移导致的,下面我们给出解决方法. 在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复。但是,此时会出现问题,这里说明几种常见问题的解决方法。

一、孤立用户的问题 比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立了一个test登录用户名,而且是以前的用户密码,用该用户登录后同样没办法操作以前属于test的用户表。

这个问题有两种办法解决。 先说解决的前提条件。 首先,要用备份文件还原数据库,我们这里的数据库名为testdb,里面有属于用户test的用户表。这个很容易了操作了,不多讲了,在企业管理器中很方便可以恢复。恢复后,就产生了孤立用户test。然后,用sa用户或者具有DBA权限的用户登录,创建一个test数据库登录用户,密码随便设置了,也可以和以前的保持一致。我们用它来对应孤立的test用户。

使登录用户和数据库的孤立用户对应起来 其实我们建立了同样名称的数据库登录用户后,数据库中的表我们照样不能使用时因为sid的不同,就是系统登录表和数据库用户表中的用户名相同,单是sid字段,数据库中的还是以前旧系统的sid值,所以我们就要把它对应成我们新建的,数据库靠sid来识别用户。 这里可以使用存储过程sp_change_users_login。它有三种动作,分别是report,update_one和auto_fix。

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

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

如果没有建立test的登录用户,还可以用 sp_change_users_login 'Auto_Fix', 'test', NULL, 'testpassword' --来创建一个登录用户名为test,密码为testpassword的用户与之对应。 好了,到这里通常情况下,数据库对象得到访问问题已经解决了。如果有多个数据库中有同一个用户的数据表,只需要选择不同的数据库,执行update_one的那个就行了。

二、刚打开SQL server Manager Studio,想看看表里的信息,就写一个查询语句,结果表名下有红线,并且执行的时候还提示对象名无效:

这是因为没有选定数据库名,因为test只是一个表名,数据库默认为master数据库了:

这个时候在下拉列表中把数据库选为表所在的数据库就可以了。 www.linuxprobe.com

三、缓存问题,这个比较简单,但是应该不会发生在数据库刚打开的时候,应该是发生在做了几次操作之后,情况跟第一种一样,解决办法就是清楚缓存,快捷键ctrl+shift+r

导读 本文主要介绍了SQL server中提示对象名无效的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 产生SQL对象名无效的问题大多原因是由于数据迁移导致的,下面我们给出解决方法. 在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复。但是,此时会出现问题,这里说明几种常见问题的解决方法。一、孤立用户的问题 比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,t
程序调用 数据库 表时,报“ 对象 *** 无效 ”,无法获取数据或者在 数据库 管理器 操作表时,会发现表 会有红色波浪线标注,显示错误,鼠标点击之后发现 提示 对象 *** 无效 ”,但是我们继续操作,又不会对操作有任何影响。 产生原因:在你保存表的时候服务器正在运行,保存只是进入了缓存,运行着的服务器并不能调用,所以显示错误 解决 方法:关闭服务器,重新打开,并且重新连接服务器 产生原因:导入 数据库 或恢复数据后,登陆用户对库没有相应的权限 解决 方法:执行语句 ex...
SQL 2005加入触发器 对象 无效 解决 办法 原来触发器开头是这样写(从2000变成2005自动写成了这个样子)的: ALTER TRIGGER [aa] ON [dbo].[T_aa] AFTER INSERT, UPDATE 怎么弄都 提示 aa 对象 无效 查了很多,说什么权限问题的,可是都没办法 解决 后来把2000的触发器开头写了进去 CREATE TRIGGER [aa]...
查询的时候报 对象 无效 , 数据库 ,数组表都存在~ 百思不得其解...发现"jdbc:microsoft: sqlserver ://localhost:1433; DatabaseName=DB" 在1433后面多了一个空格...去掉空格万事ok 正确写法"jdbc:microsoft: sqlserver ://localhost:1433;DatabaseName=DB"
解决 方法: 鼠标要放在你要进行查询的 数据库 ,比如实验三 ![在这里插入图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/efdbacbdeb984d31aa9c47a7ebe62658.gif#pic_center) 再点击新建查询,然后接下来的操作才能执行; 一开始我还原数据到实验三时,鼠标就一直在 数据库 上,当我再次点击时,是对整个 数据库 的操作,而不是
在新建查询时,你已经执行了一次,比如建表,然后你选择执行;接着你想插入数据,就在原有的基础上写代码,然后新建查询,你会发现下面 提示 执行成功但有错误,也没有说几行·受影响。查看 数据库 第一次建立的表后你发现 对象 无效 。原因是你建表的代码又执行了一次,这是不行的, 数据库 已经存在了,所以你必须一次性写完后再执行,或者(不推荐)你把第一次执行的代码删除,再执行,你发现可以执行了,也成功插入数据了。
今天学习 数据库 时,需要在已创建的表student 添加数据,按照书 给的语句编写: insert into student('nameID','name','age') values('20010101','john',20) 运行却报错“ 对象 ‘student’ 无效 ”。 解决 方法: 1.在图 所示位置选择所需修改的表所在的 数据库 。(我的 数据库 是studentInfo,根据自己实际情况选择) 2.在表 前添加" 数据库 .dbo",比如以上代码改为: insert into studentInfo.db
问题的产生 在 SQL server 2008 R2软件 ,已经创建了一个 为Student的 数据库 ,在其 创建了一个 为dbo.Department的表,接着打算查询一下表 的内容,因此使用SELECT语句,如下图所示,表示查询该表 的任意一行。 键入完毕后,点击执行按钮 然而,在消息 提示 对象 无效 ”的错误 可是,在Student 数据库 ,是有这个表的。 由此,就产生了偏差。 问题的 解决 通过一系列探索以及资料的查询,我明白了,其实是 数据库 选用的问题, 在软件左上角我选 数据库 是m..
public virtual DbSet users { get; set; } 这个说明了context的users,注意这里后缀有一个s,它与 数据库 表user对应。因为这个在以前一直是好好的。从来没有出过错误。只是最近对对visual studio做了次更新导致的。想返回原来的vs版本也不可能。只能想办法 解决 。 通过比较出错项目,
SQL 2012,表存在,查询语句也能执行,但是表 下面总是有条红线,说 对象 无效 ? 就是这个问题查询能成功执行,但是表 总是会出现红线,我在别的新建 数据库 里有也这问题,但是在系统 数据库 里用它原本就有的表的时候就不会出现红线了,这是为什么? ctrl+shift+R 就OK了,就是刷新本地缓存 点“ 对象 资源管理器”窗格 的“刷新”按钮,对应“F5”功能键。