在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