SQL对象名无效的解决方法 http://www.itpob.cn/
产生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的那个就行了。
二、对象名 ‘tablename’ 无效的问题 这里可能会有人遇到对象名 ‘tablename’无效的问题。系统表却不会产生这个问题,而用户表还要加上用户名,然后是表明才能访问,比如select * from author,会说对象名 author 无效,而用select * from test.author就可以访问,这个是用户首选身份的问题。
方法一: 解决很简单,就是察看test登录用户是否具有dba的权限或者系统管理的权限,有的话去掉就行了。 因为如果用户有dba身份,那么它登陆后的默认表空间是dbo的系统表空间,所以去掉了之后,就会以正常的test表空间访问数据表了。
方法二: 将所有test所有表设置为dbo就OK了
执行语句:exec sp_msforeachtable "sp_changeobjectowner '?','dbo'"
本文来自http://www.itpob.cn/
分享到:
相关推荐
### SQL对象名无效的解决方法 #### 一、背景与问题概述 在数据库管理和维护过程中,经常需要进行数据迁移或数据库恢复操作。这些操作可能会导致一些问题,其中一个常见的问题是SQL对象名无效。这类问题通常发生在...
讲解孤立用户和对象名无效问题的解决方法 在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复。但是,此时会出现问题,这里说明几种常见...
2. **无效的对象名**:“sys.objects”以及“sys.foreign_keys”。 这些错误通常表明源数据库(SQL Server 2005)中的某些对象或语法不被目标数据库(SQL Server 2000)所支持。具体来说,“sys.objects”和“sys....
"SQLServer自动杀死死锁进程"这一话题旨在探讨如何配置SQL Server来自动检测并解决这些死锁情况,以避免系统阻塞和性能下降。 1. **死锁的基本概念**: 死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一...
### SQL2005数据库无有效所有者解决方案 在进行SQL Server 2000的数据库备份还原到SQL Server 2005的过程中,可能会遇到一个常见问题:当尝试使用“数据库关系图”功能时,系统会弹出错误提示:“此数据库没有有效...
下面是使用 utlrp.sql 脚本重新编译所有无效对象的步骤: 1. 以sysdba身份连接到数据库 2. 进入 $ORACLE_HOME/rdbms/admin 目录 3. 执行 utlrp.sql 脚本 例如: ```sql SQL> @utlrp.sql ``` 该脚本将重新编译所有...
DbHelperSQL类,包括对数据库操作的所有方法,如公用方法、执行简单SQL语句、执行带参数的SQL语句、存储过程操作等。
1. **智能补全**:它提供实时的代码补全建议,帮助用户快速输入SQL命令和对象名,减少了手动输入的错误。 2. **语法高亮和格式化**:自动对SQL代码进行语法着色,使其更易读,同时可以按照标准格式整理代码,保持...
sqlserver 实现 行转列 split 分割的函数,具体使用方法写有在文件里。
- **SQL0013N:** 表示对象名称无效。 - **SQL0014N:** 表示源表不存在。 - **SQL0015N:** 表示返回值错误。 - **SQL0017N:** 表示执行存储过程中发生了错误。 - **SQL0020W:** 表示执行计划可能存在性能问题。 - **...
SQL Server中非常好用的插件,可以大大地方便SQL脚本的编写(比如自动提示完成关键字或者对象名、为脚本对象前加上架构信息(dbo.)、自定义命令插入脚本块等) 官方解释(使用机器翻译): SQL Server开发人员和...
#### 解决SQL对象名无效的问题 当出现“SQL对象名无效”的错误时,这通常是因为数据库迁移过程中用户SID(安全标识符)的不匹配。为了解决这个问题,可以通过以下步骤: 1. **创建新的登录用户**:在目标数据库中...
1. 对象名自动完成:在编写SQL脚本时,SQL Prompt能够快速提供数据库中的表、视图、存储过程、函数等对象的名称提示,减少手动输入的错误和时间。只需输入部分对象名,它就能自动列出可能的匹配项,极大地提高了编写...
总结来说,遇到SQL Server 2008中出现的“目录名无效”的错误时,我们应该首先考虑操作系统级别的文件和目录问题,检查是否存在临时文件夹及其权限设置问题,并检查存储过程和数据库对象是否正确。解决这些问题后,...
解决这个错误的方法是,检查 SQL 语句中的表名或视图名是否正确,确保表名或视图名存在于数据库中。 ORA-01400: 不能将空值插入 ORA-01400 是一个常见的错误信息,通常发生在插入数据时,尝试将空值插入到数据库中...
对于第二个问题,即对象名“xxxx”无效的问题,这通常是因为用户首选身份设置不当。当用户拥有DBA权限或系统管理员权限时,他们的默认表空间会是`dbo`,导致他们尝试访问未限定的表名时失败。解决方法是检查`test`...
2. 在对象资源管理器中,右键单击服务器名,选择“属性”。 3. 在服务器属性窗口中,转到“安全性”页签。在这里,选择“SQL Server和Windows身份验证模式”。确保你理解这种模式允许用户通过SQL Server身份验证或...
Windows 2008 R2 环境 配置安装SQL 2008和金蝶K/3V12.3教程
3. **错误检查**:在编写SQL时,SQLPrompt会实时检测潜在的语法错误和逻辑问题,如无效的表名、列名,未关闭的括号等,帮助开发者尽早发现并修复问题。 4. **性能优化**:SQLPrompt具有性能分析工具,可以对查询...