使用DBCC CHECKPRIMARYFILE 查詢Detach資料庫資訊

來源:互聯網
上載者:User

在論壇碰到有人問到無法Attach資料庫的問題,錯誤資訊為:

 

Msg 5171, Level 16, State 1, Line2“path\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)

 

650) this.width=650;" alt="" src="http://www.bkjia.com/uploads/allimg/131229/1SR91R5-0.png" />

 

結果如下:

0表示檔案是不是MDF檔案

1最詳細可以查詢資料庫檔案大小增長檔案ID

2顯示資料庫名稱,組建號已經定序

3是1的縮減版結果

 

使用DBCC checkprimaryfile查詢剛才附件的檔案就報了上面的錯誤,所以確信這個MDF檔案錯誤了,使用其他檔案就可以正確附加。

 

其實解決這個問題沒必要這麼麻煩,幾個MDF檔案試一次就可以了。但是知道了這個命令,以後想查詢Detach資料庫資訊了,就非常容易了。

 

另外有一個好的命名習慣是很重要的,不要將所有的輔助檔案也命名為MDF,應該為NDF或者自己制定規則。

本文出自 “關注SQL Server技術” 部落格,請務必保留此出處http://lzf328.blog.51cto.com/1196996/1119452

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.