您的位置:首页 > 数据库

附加SQL2000/2005数据库失败原因解析

2010-07-21 16:21 281 查看
1.关于2000附加2005 的数据库问题

错误描述:

1.未能在 sysindexes 中找到数据库 ID 13 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。

Could not find row in sysindexes for database ID 13, object ID 1, index ID 1. Run DBCC CHECKTABLE on sysindexes.

未能打开新数据库 'XXXX'。CREATE DATABASE 将终止。 (Microsoft SQL Server,错误: 602)

解决办法:

因为数据库附加到2005的时候, 数据库文件已经自动升级到2005, 所以在2000下是无法再附加的(没有向上兼容的)直接restore或附加是不行的, 用脚本+导数据肯定没有问题。

2005转到2000的步骤步骤

1. 生成for 2000版本的数据库脚本

2005 的manger studio

-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例

-- 右键要转到2000的库

-- 任务

-- 生成脚本

-- 在"脚本向导"的"选择数据库"中, 确定选择的是要转到2000的库

-- 勾选"为所选数据库中的所有对象编写脚本"

-- 在接下来的"选择脚本选项"中, 找到"为服务器版本编写脚本"项, 选择"SQL Server 2000"

-- 其他选项根据需要设置

-- 最后把脚本保存到一个 .sql 脚本文件

2. 在2000中创建目标数据库

在查询分析器(或2005的manger studio在打开脚本文件), 连接到SQL Server 2000,执行上面生成的脚本.以创建一个新的数据库

3. 将数据从2005导到2000

2005 的manger studio

-- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例

-- 右键要转到2000的库

-- 任务

-- 导出数据

-- 在"SQL Server 导入和导出向导"的"选择数据源"步骤中, 确定选择的是要导出的数 据库

-- 在"选择目标"步骤中, 连接到 2000, 并选择步骤2新建的库

-- 在"选择源表和源视图"中, 选择所有的表

-- 最后完成

2.SQL数据库无法附加,提示 MDF" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩

其实该问题解决非常简单,只需

1右键点击数据库所在的文件夹,

2点击属性,在常规选项卡中点击高级,

3在弹出的窗口中的压缩或加密属性中去掉压缩内容或者节省磁盘空间,点击确定

4点击应用,勾选应用于该文件夹所有文件 即可

------

原因:

NTFS 或 FAT 压缩卷上不支持 SQL Server 数据库。 压缩卷无法保证扇区对齐方式的写入,但这种写入在某些情况下是确保事务恢复所必需的。 此外,建议不要将 SQL Server 数据库备份为压缩卷上的磁盘文件。

3.在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错)

首 选请确认SQL SERVER EXPRSS已安装到本地计算机上,并且SQL SERVER (SQLEXPRESS)服务已经成功启动。如果问题仍然存在,可以尝试应打开“SQL Server 外围应用配置器”,选择“服务和连接的外围应用配置器”,然后将“远程连接”配置为“同时使用 TCP/IP 和 named pipes”

由于启动用户实例的进程时出错,导致无法生成 SQL Server 的用户实例。该连接将关闭。

将连接字符串中的“User Instance=True”修改为“User Instance=False”即可。

相关参考文章请参阅《非管理员用户实例》

无法将文件 'X:\Website\App_Data\Database.mdf' 作为数据库 ''. 附加。当前命令发生了严重错误。应放弃任何可能产生的结果。

需要为X分区以及X分区的子文件夹和文件分配Users组的“读取”权限。

尝试为文件 X:\Website\App_Data\Database.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。

首 选要确认已经为X分区以及X分区的子文件夹和文件分配了Users组的“读取”权限。如果问题仍然存在,请使用SQL Server Management Studio连接到SQLEXPRESS数据库实例,检查是否有名称是“Database”的数据库存在。如果有,分离同名数据库即可。(特别是这一个,很容易造成莫名其妙的错误)

无法打开用户默认数据库。登录失败。

用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。

数据库文件Database.mdf 的读写权限被设置成只有NETWORK SERVICE才具有。解决方法是先停止掉SQL SERVER (SQLEXPRESS)服务,然后从父项集成权限,再次启动SQL SERVER (SQLEXPRESS)服务即可。

更改数据库文件的Everyone修改权限,在windows xp中有两个方法可以修改它:

1,在"我的电脑"窗口中点"工具",选择"文件夹"选项,选择"查看"选项,在高级设置中将使用简单文件共享复选框中的小勾勾掉。然后选定数据库文件,你就可以发现多了一个安全选项,点击它,选择everyone用户组,如果没有,你可以自行添加它。然后更改它的控制权限。

2,你也可以重新启动计算机,在进入系统时按下F8,选带网络连结的安全模式,然后你选定数据库文件, 这时也有一个安全选项,你按照上面的方法也可以完成同样的功能。

注:该方法解决以下问题:

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 尝试为文件 项目名\App_Data\aspnetdb.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: