twitter

    Moving The Database Files From One Location to Another

    In Sql server 2005, you can do this easily using the "ALTER DATABASE .. MODIFY FILE" statement
    For testing purpose, I am creating a Database Named "DBtest2" and changing the Database log file
       1: CREATE DATABASE DBTest2
       2: GO
       3: USE DBTest2 
       4:  
       5: SELECT name, physical_name AS CurrentLocation, state_desc
       6: FROM sys.master_files
       7: WHERE database_id = DB_ID(N'DBTest2');
       8: GO
       9:  


    After the database, is created, if you wish, you can enter some data into the database, Otherwise you can proceed like this
    Step 1 : Change the connection to Master


       1: USE Master 
       2: GO



    Step2 :make database OFFLINE.


       1: ALTER DATABASE DBTest2 SET OFFLINE



    Step3 : move the file Physically

    This step is very crucial.You need to move that file physically from that folder to the new location.
    Open the parent folder (Here 'C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA') ,
    You can see both mdf and ldf files', make sure that you cut the appropriate file, in this case it is the Log file.
    Cut that "DBTest2_log.LDF" file and paste it on "C:\"


    Step4 : Update the system reference

    Once you move the file physically , you need to update the system reference using the ALTER DATABASE .. MODIFY FILE Command

    Here I am going to change the Path from C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\DATA\DBTest2_log.LDF  to C:\DBTest2_log.LDF


       1: ALTER DATABASE DBTest2 MODIFY FILE ( NAME ='DBTest2_log', FILENAME = 'C:\DBTest2_log.LDF')

    Step5 : Make database Online

    And here comes the final step, if you have completed the above steps without any errors, then make the database Online. Now, if you accidentally moved a wrong file, you will get an error message.


    ALTER DATABASE DBTest2 SET ONLINE
    GO
    SELECT name, physical_name AS CurrentLocation, state_desc
    FROM sys.master_files
    WHERE database_id = DB_ID(N'DBTest2');
    GO
    USE DBTest2
    GO 

    0 komentar:

    Posting Komentar