使用DBCC CHECKPRIMARYFILE 查询Detach数据库信息

简介:

在论坛碰到有人问到无法Attach数据库的问题,错误信息为:

 

Msg 5171, Level 16, State 1, Line2path\allen_log.ldfis not a primary database file.

 

很明显这个错误表示Attch数据库选择的文件不是主数据库文件,但是看附加的数据文件确实是MDF结尾的。问用户是否有多个MDF文件,用户说是,但是他确定选择的文件肯定是主数据文件,不会有错。他认为数据库文件是损坏了,我很确信这个错误是因为选择的主数据文件不对。

 

Profiler Trace抓了一下,看到后台执行下面的语句:

 

declare @command nvarchar(300)

select @command = 'dbcc checkprimaryfile (N'''+ @fileName+''' , 2)'

create table #smoPrimaryFileProp(propertysql_variantNULL,valuesql_variantNULL)

insert #smoPrimaryFileProp exec(@command)

 

里边使用了'dbcc checkprimaryfile,从网上查了一下这个DBCC命令可以查询Detach的数据库主数据文件信息,有四个选项可以使用:

 

DBCCCHECKPRIMARYFILE('D:\Program Files\Microsoft SQLServer\MSSQL10_50.R2\MSSQL\DATA\backup\allen.mdf', 0)

GO

DBCCCHECKPRIMARYFILE('D:\Program Files\Microsoft SQLServer\MSSQL10_50.R2\MSSQL\DATA\backup\allen.mdf', 1)

GO

DBCCCHECKPRIMARYFILE('D:\Program Files\Microsoft SQLServer\MSSQL10_50.R2\MSSQL\DATA\backup\allen.mdf', 2)

GO

DBCCCHECKPRIMARYFILE('D:\Program Files\Microsoft SQLServer\MSSQL10_50.R2\MSSQL\DATA\backup\allen.mdf', 3)

 

 

结果如下:

0表示文件是不是MDF文件

1最详细可以查询数据库文件大小增长文件ID

2显示数据库名称,内部版本号已经排序规则

31的缩减版结果

 

使用DBCC checkprimaryfile查询刚才附件的文件就报了上面的错误,所以确信这个MDF文件错误了,使用其他文件就可以正确附加。

 

其实解决这个问题没必要这么麻烦,几个MDF文件试一次就可以了。但是知道了这个命令,以后想查询Detach数据库信息了,就非常容易了。

 

另外有一个好的命名习惯是很重要的,不要将所有的辅助文件也命名为MDF,应该为NDF或者自己制定规则。


本文转自 lzf328 51CTO博客,原文链接:http://blog.51cto.com/lzf328/1119452



相关文章
|
6月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
680 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
8月前
|
Cloud Native 关系型数据库 分布式数据库
|
8月前
|
并行计算 关系型数据库 MySQL
如何用 esProc 将数据库表转储提速查询
当数据库查询因数据量大或繁忙变慢时,可借助 esProc 将数据导出为文件进行计算,大幅提升性能。以 MySQL 的 3000 万行订单数据为例,两个典型查询分别耗时 17.69s 和 63.22s。使用 esProc 转储为二进制行存文件 (btx) 或列存文件 (ctx),结合游标过滤与并行计算,性能显著提升。例如,ctx 并行计算将原查询时间缩短至 0.566s,TopN 运算提速达 30 倍。esProc 的简洁语法和高效文件格式,特别适合历史数据的复杂分析场景。
|
6月前
|
安全 Java 数据库
Jasypt加密数据库配置信息
本文介绍了使用 Jasypt 对配置文件中的公网数据库认证信息进行加密的方法,以提升系统安全性。主要内容包括:1. 背景介绍;2. 前期准备,如依赖导入及版本选择;3. 生成密钥并实现加解密测试;4. 在配置文件中应用加密后的密码,并通过测试接口验证解密结果。确保密码安全的同时,保障系统的正常运行。
421 3
Jasypt加密数据库配置信息
|
9月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
9月前
|
数据库
【YashanDB知识库】数据库用户所拥有的权限查询
【YashanDB知识库】数据库用户所拥有的权限查询
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
162 3
|
3月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
797 152

热门文章

最新文章