产生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'"
我个人的解决方法:采用标准访问SQL Server方式 即 数据库名+用户名+表名 例如schema="xxx.xxx.xxx"
分享到:
相关推荐
Microsoft SQL Server 2005 Express Edition SQL Server 文档小组无法回答技术支持问题,但是欢迎您对本自述文档提出建议和意见。您可以使用提供的链接快速、直接地发送电子邮件反馈。请使用英语发送您的反馈信息...
12.1.1 我总是遇到错误“数据透视表 字段名无效” 275 12.1.2 刷新数据透视表时数据消失了 276 12.1.3 我的数据透视表总是使用“计数”而不使用“求和” 276 12.1.4 我的数据透视表总是将工作簿中的列调整为...
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
04052引用多个非连续单元格区域的集合(Union方法) 04053引用多个非连续单元格区域的集合(循环处理) 04054引用多个单元格区域的交叉区域 04055获取计算公式的所有引用单元格 04056获取计算公式中引用的其他工作表...
ANTLR 4正是我所期望的语法分析器生成器,现在,我终于能够回头去研究我原先在20世纪80年代试图解决的问题——假如我还记得它的话。 本书的主要内容本书是你所能找到的有关ANTLR 4的信息源中最好、最完整的。免费...
0254 指定的扩展属性名无效。 0255 扩展属性不一致。 0258 等待操作过时。 0259 没有其他可用数据。 0266 无法使用复制功能。 0267 目录名无效。 0275 扩展属性不匹配缓冲区。 0276 ...
12.1.1 我总是遇到错误“数据透视表 字段名无效” 275 12.1.2 刷新数据透视表时数据消失了 276 12.1.3 我的数据透视表总是使用“计数”而不使用“求和” 276 12.1.4 我的数据透视表总是将工作簿中的列调整为...
6) 修改MYSQL支持库跨静态编译的EXE和DLL传递连接句柄和记录集句柄无效的BUG(改动较大,可能会产生兼容性问题,我们已经仔细测试,也请使用到此库的用户帮助我们多多测试,以便及早发现问题,谢谢) 7) 其它修改 ...
当查询ArcInfo coverages, shape文件, INFO表以及dBASE表时,SQL表达式中的字段名必须用双引号扩起。如:“AREA”,如果查询的是个人地理数据库数据,则需要将字段名包含在方括号内,如:[AREA],如果查询的是ArcSDE...
12.1.1 我总是遇到错误“数据透视表 字段名无效” 275 12.1.2 刷新数据透视表时数据消失了 276 12.1.3 我的数据透视表总是使用“计数”而不使用“求和” 276 12.1.4 我的数据透视表总是将工作簿中的列调整为...
12.1.1 我总是遇到错误“数据透视表 字段名无效” 275 12.1.2 刷新数据透视表时数据消失了 276 12.1.3 我的数据透视表总是使用“计数”而不使用“求和” 276 12.1.4 我的数据透视表总是将工作簿中的列调整为...
19.16 防止JavaScript文件被其他站直接引用 19.17 检查机器是否安装Word 19.18 打印当前页 19.19 打印预览 19.20 隐藏不想打印的页面内容 19.21 使用ExecWB直接打印 19.22 动态绑定XML文件 19.23 Kill Excel的进程 ...
19.16 防止JavaScript文件被其他站直接引用 19.17 检查机器是否安装Word 19.18 打印当前页 19.19 打印预览 19.20 隐藏不想打印的页面内容 19.21 使用ExecWB直接打印 19.22 动态绑定XML文件 19.23 Kill Excel的进程 ...
2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 3.描述实时系统的基本特性 在特定时间内完成特定的任务,实时性与可靠性。 4.全局变量和局部变量...