SQL Server databases have three
types of files:
Primary data files
The primary data file is the
starting point of the database and points to the other files in the database.
Every database has one primary data file. The recommended file name extension
for primary data files is .mdf.
Secondary data files
Secondary data files make up all the
data files, other than the primary data file. Some databases may not have any
secondary data files, while others have several secondary data files. The
recommended file name extension for secondary data files is .ndf.
Log files
Log files hold all the log
information that is used to recover the database. There must be at least one
log file for each database, although there can be more than one. The
recommended file name extension for log files is .ldf.
NOTE:In SQL Server, the locations
of all the files in a database are recorded in the primary file of the database
and in the master database. The SQL Server Database Engine uses the file
location information from the master database most of the time.
SQL Server files have two names:
logical_file_name
The logical_file_name is the name
used to refer to the physical file in all Transact-SQL statements. The logical
file name must comply with the rules for SQL Server identifiers and must be
unique among logical file names in the database.
os_file_name
The os_file_name is the name of the
physical file including the directory path. It must follow the rules for the
operating system file names.
SQL Server data and log files can be
put on either FAT or NTFS file systems. We recommend using the NTFS file system
because the security aspects of NTFS. Read/write data filegroups and log files
cannot be placed on an NTFS compressed file system. Only read-only databases
and read-only secondary filegroups can be put on an NTFS compressed file
system.
When multiple instances of SQL
Server are run on a single computer, each instance receives a different default
directory to hold the files for the databases created in the instance.
Using Filegroups
There are many advantages to using
filegroups to manage the database workload. A filegroup may contain many
datafiles, and the properties of all the datafiles can be managed
simultaneously with a filegroup.
Primary and Secondary Filegroups
A primary
filegroup contains the primary datafile (mdf) and possibly secondary
datafiles (ndf). All system tables are allocated to the primary filegroup.
A secondary
filegroup (also called a user-defined filegroup) contains secondary
datafiles (ndf) and database objects.
The default
filegroup contains objects which were created without an assigned filegroup.
The primary filegroup is the default filegroup unless another filegroup is
specified.
Logfiles are never
part of a filegroup. We learned about logfiles in yesterdays post. The
logfile tracks all the changes that have taken place since the last
database backup, whereas datafiles have the file extension .mdf or .ndf,
logfiles always have the .ldf extension.
In the figure below
we have one datafile called RatisCo_Data.mdf in the SQL folder of the C
drive (C:\SQL\RatisCo_Data.mdf). Since we didn’t specify any filegroups, SQL
Server automatically placed it in the primary filegroup for us. We also
created a logfile in the same location (C:\SQL\RatisCo_Log.ldf). That file
was not placed inside a filegroup, since logfiles are never part of a
filegroup.
Our next example will create one datafile in the primary filegroup and two datafiles in the secondary filegroup (also known as the user-defined filegroup).

We can accomplish this with the following steps:
- Create one mdf (main datafile) in the primary filegroup.
- Create two ndfs (secondary datafiles) in a user-defined filegroup called Order_Hist located on a separate drive.
- Create the ldf (log datafile) on a separate drive.
Each data file has its properties set in its own set of
parenthesis. If you have two parentheses after a filegroup name then that
filegroup will have two datafiles (like the [OrderHist] filegroup in the code
below). The framework for the code is seen here.
If our goal is to
put the mdf on the C: the two ndf files on the D: and the log on the E: then
our code would be completed by doing the following:
QUESTION-
No comments:
Post a Comment