alter database NEWDBNAME set emergency
declare @databasename varchar(255)
set @databasename='NEWDBNAME'
exec sp_dboption @databasename, N'single', N'true'
dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS) --将目标数据库置为单用户状态
dbcc checkdb(@databasename,REPAIR_REBUILD)
exec sp_dboption @databasename, N'single', N'false'
在网上查了查资料,确实按照此方法把问题解决了,先将解决办法总结如下:原因:1.可能是数据文件损坏。
2.可能是日志文件损坏或丢失。
3.是因为没有 *** 作权限,所以附加的时候出错,只要设置数据库文件的安全属性即可。
解决原因3的办法:
1.若不是用sqlserver身份验证登陆的,请用sqlserver身份验证sa登陆。
2.修改mdf和ldf文件的权限:“右击”打开该数据库文件的属性窗口,选择“属性”菜单->选择“安全”标签->选择“编辑”按钮,然后在选择组或用户名列表中,选择Authenticated Users,在权限列表中选中完全控制。
4.选择"确定"按钮关闭对话框。
再重新附加数据库,成功。
附加数据库的必要条件:· 附加数据库时,所有数据文件(MDF 文件和 LDF 文件)都必须可用。
· 在附加数据库时,如果 MDF 和 LDF 文件位于不同目录,该 *** 作将失败。
我们可以使用SQL Server Management Studio附加数据库:
1. 在 SQL Server Management Studio 对象资源管理器中,连接到 SQL Server 数据库引擎的实例,然后展开该实例。
2. 右键单击“数据库”,然后单击“附加”。
3. 在“附加数据库”对话框中,指定要附加的数据库,单击“添加”,然后在“定位数据库文件”对话框中选择数据库所在的磁盘驱动器并展开目录树,以查找并选择数据库的 .mdf 文件。因为数据库日志已经丢失,点击.ldf文件,并点击“移除”。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)