开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用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



版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云日志服务SLS 数据加工之多源分发详解
阿里云日志服务(SLS)**的[数据加工](https://help.aliyun.com/document_detail/125384.html?spm=a2c4g.11186623.6.883.39dd5cb5EEa920)功能是一个可托管、高可用、可扩展的数据加工服务,广泛适用于数据的规整、富化、分发、汇总、重建索引等场景。使用自建的DSL编排语法,让用户可以通过短短几行代码实现数据清洗和再投递的功能。这篇文章我们主要来介绍下数据加工下的投递功能。
1010 0
阿里云图数据库GraphDB上线,助力图数据处理
GraphDB简介 GraphDB图数据库适用于存储,管理,查询复杂并且高度连接的数据,图库的结构特别适合发现大数据集下数据之间的共性和特性,特别善于释放蕴含在数据关系之间的巨大价值。GraphDB引擎本身并不额外收费,仅收取云hbase费用。
6594 0
阿里云城市服务商分享怎么使用DTS迁移PPAS数据
使用数据传输服务(DTS)将本地数据库迁移到 RDS for PPAS,可以实现应用不停服务的情况下,平滑完成数据库的迁移工作。迁移过程中,对本地的 Oracle 数据库没有影响。那么如何操作呢,湖北区域阿里云城市服务商捷讯技术告诉您怎么使用怎么使用DTS迁移PPAS数据
1549 0
Retrofit——A type-safe HTTP client for Android and Java(The first part)
一,介绍    Retrofit将你的http接口API转换成项目中的一个java的接口。 public interface GitHubService { @GET("users/{user}/repos") Call listRepos(@Path("user") String user); }   Retrofit会自动为上面的Service生成一个实现类。
904 0
java代码调用使用cxf搭建的webService服务传递对象
前边成功创建好一个cxf的webServcie服务,并带了一个无参数的方法。现在进一步尝试了使用带参数的方法,分别测了用String为参数和用自定义的对象为参数。 其中,使用String为参数时和不带参数的写法没有什么区别,调用时也就是很普通的调用。但是调用自定义对象为参数的方法时,实际数据并没有传递成功,于是在网上搜索一番后找到了解决办法,成功实现这一功能。 具体实现步骤大致如下: 1、
1141 0
java代码调用使用cxf搭建的webService服务传递对象
前边成功创建好一个cxf的webServcie服务,并带了一个无参数的方法。现在进一步尝试了使用带参数的方法,分别测了用String为参数和用自定义的对象为参数。 其中,使用String为参数时和不带参数的写法没有什么区别,调用时也就是很普通的调用。但是调用自定义对象为参数的方法时,实际数据并没有传递成功,于是在网上搜索一番后找到了解决办法,成功实现这一功能。 具体实现步骤大致如下: 1、
1702 0
使用ECS中的crontab配合RDS for PPAS实现数据库任务管理
使用ECS中的crontab配合RDS for PPAS实现数据库任务管理 由于在RDS for PPAS中使用DBMS_JOB及DBMS_SCHEDULER配置比较复杂,因此在进行Oracle迁移时如果没有大量使用以上两个功能,我们可能通过ECS进行crontab配置实现数据库中的任务管理。
3928 0
PHPCMS V9调用dz x1.5 论坛数据教程
摸索了个把月的V9,目前的功能大致了解了。建站前计划要整合DZ X1.5的,在论坛搜索方法已经实现了同步,但是对于论坛帖子调用还没有得到更多帮助,可能是因为太简单了,没有人去写,我就献丑整理一下吧。如果有用麻烦给我个顶,俺小学生需要鼓励。
1231 0
23703
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载