sqlserver数据库文件相关知识

Posted 囧囧x鑫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver数据库文件相关知识相关的知识,希望对你有一定的参考价值。

在SQL Server 数据库中

文件有三大类:

  主数据文件:扩展名为.mdf。

    主数据文件是数据库的关键文件,是所有数据文件的起点,包含指向其他数据库文件的指针,每个数据库都必须有且仅有一个主文件

  辅数据文件:扩展名为.ndf。

     辅助主文件存储数据,包含不在主文件内的其他数据,一个数据库可以有0~n个辅文件

  日志文件:扩展名为.ldf。

    记录存放恢复数据库时所需要的所有日志信息,一个数据库可有1~n个日志文件

 一个数据库必须至少包含一个主数据文件和一个日志文件。

文件组分为两种:

主文件组(PRIMARY)

  存放主数据库文件和任何没有明确指定文件组的其他文件。

用户定义文件组

  在创建火修改数据库时,用FileGroup关键字定义的文件组,存放辅数据文件。

 

文件组的特性:

(1)一个文件只能属于一个文件组;

(2)只有数据文件才能归属于某个文件组,日志文件不属于任何文件组;

(3)每个数据库中都有一个默认的文件组在运行,可以指定默认文件组,没有指定的话,则默认为主文件组;

(4)若没有用户定义文件组,则所有的数据文件都存放在主文件组中。

 查看文件存放位置

选择对应的数据库文件,右击属性,选择文件,即可查找文件存放的位置;

 

 使用命令的方式查询文件存放位置

select database_id,name,physical_name AS CurrentLocation,state_desc,size
from sys.master_files 
where database_id=db_id(N\'master\');

修改存放位置

alter database 数据库名 modify file ( name = 文件名(不包含后缀), filename = \'文件存储路径\');
alter database 数据库名 modify file ( name = 文件名(不包含后缀), filename = \'文件存储路径\');

alter database testDb modify file ( name = testDb, filename = \'D:\\Program Files\\SQL_DATA\\testDb\\testDb.mdf\');
alter database testDb modify file ( name = testDb_log, filename = \'D:\\Program Files\\SQL_DATA\\testDb\\testdb_log.ldf\');

后续其他文件也统一存放,需要修改默认配置:

EXEC xp_instance_regwrite 
@rootkey=\'HKEY_LOCAL_MACHINE\', 
@key=\'Software\\Microsoft\\MSSQLServer\\MSSQLServer\', 
@value_name=\'DefaultData\', 
@type=REG_SZ, 
@value=\'D:\\Program Files\\MSSQL_MDF\\Data\' 
GO 
EXEC master..xp_instance_regwrite 
@rootkey=\'HKEY_LOCAL_MACHINE\', 
@key=\'Software\\Microsoft\\MSSQLServer\\MSSQLServer\', 
@value_name=\'DefaultLog\', 
@type=REG_SZ, 
@value=\'D:\\Program Files\\MSSQL_MDF\\Data\' 
GO

 

Management studio的使用

参考官方文档

https://docs.microsoft.com/zh-cn/sql/ssms/tutorials/connect-query-sql-server?view=sql-server-ver15

创建一个名为 TutorialDB 的数据库:

USE master
GO
IF NOT EXISTS (
   SELECT name
   FROM sys.databases
   WHERE name = N\'TutorialDB\'
)
CREATE DATABASE [TutorialDB]
GO

执行查询,请选择“执行”(或选择键盘上的 F5)

在新创建的 TutorialDB 数据库中创建一个表。

USE [TutorialDB]
-- Create a new table called \'Customers\' in schema \'dbo\'
-- Drop the table if it already exists
IF OBJECT_ID(\'dbo.Customers\', \'U\') IS NOT NULL
DROP TABLE dbo.Customers
GO
-- Create the table in the specified schema
CREATE TABLE dbo.Customers
(
   CustomerId        INT    NOT NULL   PRIMARY KEY, -- primary key column
   Name      [NVARCHAR](50)  NOT NULL,
   Location  [NVARCHAR](50)  NOT NULL,
   Email     [NVARCHAR](50)  NOT NULL
);
GO

 

以上是关于sqlserver数据库文件相关知识的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

缺少 SQL SERVER 2014 代码片段

sqlserver 更改跟踪相关知识

sql server运行中,是不是能删除主数据库事务日志文件

具有运行时 pojos 的带有 Hibernate 的 OSGi 片段包

SQLServer数据库之入门知识