Help: SQL Server

Sharing my knowlege about SQL Server Troubleshooting Skills

  • Blog Stats

    • 2,050,846 hits
  • Select GETDATE()

    August 2014
    M T W T F S S
     123
    45678910
    11121314151617
    18192021222324
    25262728293031

Tips and Tricks : Error: 5171 – tempdb.mdf is not a primary database file

Posted by blakhani on August 12, 2014


If you are getting same error for database other than tempdb then there is a serious issue with the file. Primary file is a database file which contains information about database itself like location, size of other files and other information about the database. Error 5171 means that SQL Server is attempting to get the information for a database from a file that is not the primary file.

While doing some testing with TempDB database I started getting below errors in ERRORLOG and SQL Server was not getting started.

2014-08-12 05:08:24.91 spid9s      Clearing tempdb database.

2014-08-12 05:08:28.20 spid9s      Error: 5171, Severity: 16, State: 1.

2014-08-12 05:08:28.20 spid9s      F:\TEMPDB\tempdb.mdf is not a primary database file.

2014-08-12 05:08:28.26 spid9s      Error: 1802, Severity: 16, State: 4.

2014-08-12 05:08:28.26 spid9s      CREATE DATABASE failed. Some file names listed could not be created. Check related errors.

2014-08-12 05:08:28.26 spid9s      Could not create tempdb. You may not have enough disk space available. Free additional disk space by deleting other files on the tempdb drive and then restart SQL Server. Check for additional errors in the event log that may indicate why the tempdb files could not be initialized.

2014-08-12 05:08:28.29 spid9s      SQL Server shutdown has been initiated

 

This started happening after I moved TempDB to new location using my own earlier blog. Here is the command which I have run

USE master; 
GO 
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdev, FILENAME = 'F:\TEMPDB\tempdb.mdf'); 
GO 
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'F:\TEMPDB\tempdb.mdf'); 
GO 

If you notice closely, I have made mistake in extension of the files and due to which both files are same. This can easily be corrected by starting SQL in minimal configuration using parameter f and correcting the path.

When I tried the same in SQL Server 2014, I got below error message, which is amazing.

Msg 12106, Level 16, State 1, Line 6

The path name ‘F:\TEMPDB\tempdb.mdf’ is already used by another database file. Change to another valid and UNUSED name.

If this is happening for database other than TempDB after moving then you may want to check if move command was proper or not. You need to check logical name and the physical file path. If this is after some crash then you may need to restore from a last known good backup. If you don’t have backup then … you need to find a new assignment! Take this as a new lesson and move on. There are data recovery tools available but I have not worked with them and can’t recommend anyone.

Hope this helps.

  • Cheers,
  • Balmukund Lakhani
  • Twitter @blakhani
  • Author: SQL Server 2012 AlwaysOnPaperback, Kindle
  • Advertisement

    One Response to “Tips and Tricks : Error: 5171 – tempdb.mdf is not a primary database file”

    1. johnson Welch said

      great stuff thanks for sharing ! I have resolved this error. As i found another helpful post for the same see here: http://www.sqlserverlogexplorer.com/error-5171-mdf-is-not-a-primary-database-file/

    Leave a Reply

    Fill in your details below or click an icon to log in:

    WordPress.com Logo

    You are commenting using your WordPress.com account. Log Out /  Change )

    Facebook photo

    You are commenting using your Facebook account. Log Out /  Change )

    Connecting to %s

    This site uses Akismet to reduce spam. Learn how your comment data is processed.

     
    %d bloggers like this: