DB1:数据库的创建和文件的修改
在SQL Server中,使用Create Database創建數據庫,使用Alter Database命令,能夠修改數據庫的數據文件和日志文件。
一,創建數據庫
1,在創建數據庫時,最佳實踐是:
- 創建一個或多個文件組,并設置默認文件組
- 每個文件組中的數據文件和CPU的內核數據相同,將文件均勻分布在不同的物理硬盤上,使IO均勻分布在不同的物理磁盤上;
- 數據文件的初始大小,文件增長和最大大小保持一致,這樣,能夠使每個文件的IO次數相對均勻;
- 日志文件分配在性能最好的物理硬盤上,寫日志的性能直接影響數據修改的性能;
- 在創建文件時,為每個文件分配足夠大的初始空間,避免數據文件size的增長
創建數據庫的示例:
create database newdb on primary (name='newdb', filename='D:\MSSQLServer\newdb.mdf', size=1GB,maxsize=10GB,filegrowth=1GB), (name='newdb_1',filename='D:\MSSQLServer\newdb_1.ndf',size=1GB,maxsize=10GB,filegrowth=1GB), (name='newdb_2',filename='D:\MSSQLServer\newdb_2.ndf',size=1GB,maxsize=10GB,filegrowth=1GB), (name='newdb_3',filename='D:\MSSQLServer\newdb_3.ndf',size=1GB,maxsize=10GB,filegrowth=1GB), (name='newdb_4',filename='D:\MSSQLServer\newdb_4.ndf',size=1GB,maxsize=10GB,filegrowth=1GB) log on (name='newdb_log',filename='D:\MSSQLServer\newdb_log.ldf',size=1GB,maxsize=10GB,filegrowth=1GB) go參數name指定邏輯文件名(logical_file_name),參數FileName指定物理文件名,SQL Server通過邏輯文件名引用數據文件或日志文件。
2,查看當前數據庫的文件
use newdb goselect df.file_id,df.type,df.type_desc,df.name,df.physical_name,df.state,df.state_desc,df.size*8/1024/1024 as size_gb,df.max_size*8/1024/1024 as max_size_gb,df.growth,df.is_percent_growth,fg.name as filegroup_name,fg.is_default from sys.database_files df inner join sys.filegroups fgon df.data_space_id=fg.data_space_id3,查看所有數據庫的文件
select DB_NAME(mf.database_id) as dbname,mf.file_id,mf.type as file_type,mf.type_desc,mf.data_space_id as file_group,mf.name as logical_file_name,mf.physical_name,mf.state_desc,mf.size*8/1024/1024 as size_gb,mf.max_size*8/1024/1024 as max_size_gb,mf.growth,mf.is_percent_growth from sys.master_files mf --where database_id=db_id('newdb')二,增加數據/日志文件
1,增加文件組(File Group)
use master go alter database newdb add filegroup fg_newdb1;2,向fg_newdb1文件組(File Group)中增加數據文件
alter database newdb add file (name=fg_newdb1_1,filename ='d:\MSSQLServer\fg_newdb1_1.ndf',size=1GB,maxsize=10GB,filegrowth=1GB) to filegroup fg_newdb1;3,增加日志文件
alter database newdb add log file (name=newdb_log_1,filename ='d:\MSSQLServer\newdb_log_1.ldf',size=1GB,maxsize=10GB,filegrowth=1GB);三,修改數據庫文件
1,修改數據文件的邏輯文件名(Logical file name)
MODIFY FILE ( NAME = ‘logical_file_name’, NEWNAME = ‘new_logical_name’ )示例,將數據文件fg_newdb1_1 的邏輯文件名修改 fg_newdb1_file1
alter database newdb modify file (NAME ='fg_newdb1_1',newname='fg_newdb1_file1')2,修改數據文件的物理文件名
MODIFY FILE ( NAME = logical_file_name, FILENAME = ' new_path/os_file_name ' )修改數據文件的物理文件名,能夠將數據文件移動到不同的位置上,分四步實現:
step1,在數據庫中注冊數據文件的新的物理文件名
alter database newdb modify file (name='fg_newdb1_file1',filename='F:\MSSQLServer\fg_newdb1_file1.ndf');語句執行成功之后,數據庫會顯示:物理文件名已經在系統目錄中修改
The file "fg_newdb1_file1" has been modified in the system catalog. The new path will be used the next time the database is started.
step2,使數據庫離線
use master go alter database newdb set offline with rollback immediate;在將數據庫離線(脫機,take offline)時,如果數據中有Sleeping Session存在,或者有query正在執行,那么Take Offline操作會一直等待下去,直到沒有任何query運行,使用 ROLLBACK IMMEDIATE??選項,能夠立即回滾數據庫中正在執行的所有事務,使Take Offline 操作迅速完成。
step3,將數據文件移動到新的位置上
以管理員權限運行move命令將文件移動到新的位置上,并重命名為新的物理文件名
move D:\MSSQLServer\fg_newdb1_1.ndf F:\MSSQLServer\fg_newdb1_file1.ndfstep4,使數據庫聯機
use master go alter database newdb set online四,從數據庫中移除數據文件
在SQL Server中,不管是日志文件,還是數據文件,在刪除之前,必須清空,只有空的文件才能從數據庫中刪除。
1,從數據庫中刪除數據文件
step1,清空數據文件
USE [db_study] GO DBCC SHRINKFILE (N'db_study_file1' , EMPTYFILE) GOStep2, 從數據庫中刪除數據文件
USE master; GO ALTER DATABASE db_study REMOVE FILE db_study_file1; GO2,從數據庫中刪除日志文件
step1,清空日志文件
USE [db_study] GO DBCC SHRINKFILE (N'db_study_log1' , EMPTYFILE) GOstep2,從數據庫中刪除日志文件
USE master; GO ALTER DATABASE db_study REMOVE FILE db_study_log1; GO3,從數據庫中刪除文件組
USE master; GO ALTER DATABASE db_study REMOVE FILEGROUP fg_study1; GO轉載于:https://www.cnblogs.com/huhewei/p/6130582.html
總結
以上是生活随笔為你收集整理的DB1:数据库的创建和文件的修改的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos6.5下安装配置ELK及收集
- 下一篇: 树莓派搭建ActiveMQ