mssql数据库服务器进行硬件升级后,采用附加数据库的方式还原了数据库居然访问不了,出现“对像名XXXX无效的提示”
解决办法:
1、更改表的所有者为dbo,可以在查询分析器里边执行如下语句:
exec sp_msforeachtable "sp_changeobjectowner '原所有者名称','dbo'"
注意这个只能更改表的所有者,存储过程可以这样修改:exec sp_changeobjectowner '所有者.存储过程名','dbo',还有视图等,差且只能一个表一个表的改。所说可以一下改,不过没试过(摘自互联网)
2、我自己的操作步骤。
1、附加数据库。(在选择所有者(DBO)的时候选择SA)
2、建立跟原账号相同的账号(例test),但不指定数据库访问。
3、打开查询分析器(使用sa登陆
),选择刚建的数据库存。执行以下语句。
sp_change_users_login 'update_one', 'test', 'test'
F5执行该语句即可。
网络上详细解释:
使登录用户和数据库的孤立用户对应起来
其实我们建立了同样名称的数据库登录用户后,数据库中的表我们照样不能使用时因为sid的不同,就是系统登录表和数据库用户表中的用户名相同,单是sid字段,数据库中的还是以前旧系统的sid值,所以我们就要把它对应成我们新建的,数据库靠sid来识别用户。
这里可以使用存储过程sp_change_users_login。它有三种动作,分别是report,update_one和uto_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的那个就行了。
还有一种情况:
对象名 ‘xxxx’ 无效的问题
这
里可能会有人遇到对象名 ‘xxxx’无效的问题。系统表却不会产生这个问题,而用户表还要加上用户名,然后是表明才能访问,比如
select * from author,会说对象名 author 无效,而用
select * from test.author就可以访问,这个是用户首选身份的问题。
解决很简单,就是察看 test登录用户是否具有dba的权限或者系统管理的权限,有的话去掉就行了。
因为如果用户有dba身份,那么它登陆后的默认表空间是dbo的系统表空间,所以去掉了之后,就会以正常的test表空间访问数据表了。
分享到:
相关推荐
### MySQL数据库附加详解 在日常的数据库管理工作中,经常需要进行数据库的备份、恢复或迁移等操作。本文将详细介绍如何在MySQL中附加数据库,并分享一些实用的技巧。 #### 一、MySQL附加数据库概述 在MySQL中,...
实验2 "MySQL数据库对象管理" 是数据运维课程的一部分,旨在帮助学生理解并掌握数据库中的核心元素,如数据字典、表、索引、视图等。实验内容分为多个步骤,涵盖了从查看元数据信息到实际创建、修改和删除数据库对象...
MySQL数据库对象管理实验知识点: 一、MySQL数据字典的作用与操作 数据字典是数据库系统中关于数据库的描述信息,它可以看作数据库中所有对象的元数据存储。在MySQL中,INFORMATION_SCHEMA数据库提供了访问数据库...
MySQL 数据库对象管理 本节实验旨在帮助学生理解数据字典、表、索引、视图的作用,掌握数据字典的操纵方式,掌握库、表、索引、视图的操作方法。通过对 INFORMATION_SCHEMA 中各个表的查看、创建、修改和删除操作,...
useSSL=false&serverTimezone=UTC`,其中`localhost`是服务器地址,`3306`是默认的MySQL端口号,`mydatabase`是你要连接的数据库名。 3. **获取Statement或PreparedStatement对象**:使用`Connection`对象创建`...
"国家开放大学 MySQL数据库应用实验训练1 在MySQL中创建数据库和表" 本实验训练旨在让学生掌握 MySQL 中的数据库和表的创建过程。 MySQL 是一种关系型数据库管理系统,广泛应用于各种领域。为提高学生的实践能力,...
如果 h2 数据库中的数据类型与 MySQL 数据库中的数据类型不兼容,可能会出现数据导入失败的情况。 h2 数据库导入 MySQL 数据库需要通过将 h2 数据库下的表结构和数据分别导入到 MySQL 数据库中,并确保数据的一致性...
本教程将详细讲解如何使用MySQL进行批量附加数据库,并结合提供的"批量附加数据库.sql"文件来阐述相关知识。 首先,我们需要理解什么是数据库附加。在MySQL中,"附加"通常指的是恢复一个数据库的二进制日志文件(....
作为一名IT行业大师,我将详细解释腾讯云数据库mysql产品认证答案,涵盖标题、描述、标签和部分内容中提到的知识点。 腾讯云数据库mysql产品认证答案 腾讯云数据库mysql产品认证答案是指腾讯云提供的mysql数据库...
MySQL是一种广泛使用的开源关系型数据库管理系统,以其高效、稳定和易于管理的特点,深受开发者喜爱。在Java开发环境中,为了连接到MySQL数据库,通常需要引入特定的驱动包,也就是所谓的"jar架包"。这个"mysql连接...
在IT行业中,C#是一种广泛使用的面向对象的编程语言,尤其在开发Windows应用程序和Web应用程序时。Mysql则是一款流行的开源关系型数据库管理系统,因其高效、稳定和易于管理的特性而受到开发者们的青睐。本教程将...
MySQL数据库的基础知识,帮助你初步认识MySQL数据库的对象
MYSQL数据库大进级,是非常全面的MYSQL数据库进阶学习资料!
2. **Database**: 输入MySQL服务器上的数据库名。 3. **Host**: 输入MySQL服务器的地址,可能是IP地址或者域名。 4. **Port**: MySQL服务的端口号,默认是3306。 5. **User**: 连接数据库的用户名。 6. **Password**...
在Android平台上,将照片存储到MySQL云数据库并从其中读取是一个常见的需求,尤其是在构建具有云存储功能的应用程序时。本项目实现了一个功能,允许用户将相册中的照片上传到MySQL云数据库,然后可以从数据库中下载...
MATLAB 访问 MySQL 数据库教程及代码 MATLAB 是一个功能强大的数学计算软件,而 MySQL 是一个流行的关系数据库管理系统。在本教程中,我们将学习如何使用 MATLAB 访问 MySQL 数据库,并提供详细的代码示例。 一步...
MySQL数据库是一种广泛使用的开源关系型数据库管理系统,以其高效、可靠和易于学习的特性深受开发者喜爱。本教程将全面介绍MySQL的基础知识,并通过实例帮助你掌握其核心操作。 首先,我们来了解一下MySQL的基本...
MySQL数据库是一种广泛应用于Web开发和企业级数据存储的开源关系型数据库管理系统。在这个"MySQL数据库应用形考实验1-4全答案.zip"压缩包中,包含了四个关于MySQL基础操作的实验训练,涵盖了从数据库和表的创建,到...