凌峰创科服务平台

MSSQL如何创建服务器数据库?

在MSSQL中创建服务器数据库是数据库管理的基础操作,涉及服务器连接、数据库设计、参数配置等多个环节,以下从环境准备、语法结构、参数详解、实例演示及注意事项等方面展开详细说明,帮助用户全面掌握MSSQL数据库的创建流程。

MSSQL如何创建服务器数据库?-图1
(图片来源网络,侵删)

环境准备与前提条件

在创建数据库前,需确保以下条件已满足:

  1. MSSQL服务安装:已安装SQL Server实例(如SQL Server 2025/2025),并通过SQL Server Management Studio(SSMS)或命令行工具连接。
  2. 权限配置:当前登录账户需具备sysadmin服务器角色或CREATE DATABASE权限,否则无法执行创建操作。
  3. 磁盘空间:确保数据库文件存放路径(如默认的C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA)有足够剩余空间,建议预留至少数据库预期大小的1.5倍以应对未来增长。

CREATE DATABASE语法结构

MSSQL创建数据库的核心语法如下,包含主数据文件、日志文件及多个可选参数:

CREATE DATABASE database_name
[ ON 
  [ PRIMARY ] <filespec> [ ,...n ]
  [ , <filegroup> [ ,...n ] ]
]
[ LOG ON <filespec> [ ,...n ] ]
[ COLLATE collation_name ]
[ WITH 
  <option> [ ,...n ]
]
[;]
<filespec>::=
{
  (
    NAME = logical_file_name,
    FILENAME = { 'os_file_name' | 'file_path_on_mounted_storage' } ,
    [ SIZE = size [ KB | MB | GB | TB ] ],
    [ MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ],
    [ FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
  )
}
<option>::=
{
  FILESTREAM ( 
    [ DEFAULTDIRECTORY = directory_name ]
  )
}

核心参数详解

数据库名称(database_name)

  • 需符合SQL Server标识符规则,长度不超过128字符,且不能与现有数据库重名。
  • 建议使用有意义的名称,如Sales_DBUser_Log,避免使用关键字(如SELECTJOIN)。

数据文件与日志文件(ON和LOG ON)

  • 主数据文件(PRIMARY):存储数据库的启动信息及数据,每个数据库必须有且仅有一个主数据文件,扩展名通常为.mdf
  • 次要数据文件(SECONDARY):当数据量过大时,可通过次要文件(扩展名.ndf)分散存储,避免单个文件过大影响性能。
  • 日志文件(LOG ON):记录所有事务操作,用于数据库恢复,扩展名通常为.ldf,日志文件建议与数据文件分开存储在不同磁盘,以提高I/O性能。

文件参数配置

参数 说明 示例值
NAME 逻辑文件名,用于SQL Server内部引用 Sales_Data
FILENAME 操作系统文件路径,需包含完整路径及文件名 'D:\Data\Sales_DB.mdf'
SIZE 初始文件大小,默认为MB单位,主数据文件默认为3MB,日志文件为1MB SIZE = 100MB
MAXSIZE 文件最大容量,可设置为UNLIMITED(无限制) MAXSIZE = 10GB
FILEGROWTH 文件增长增量,可按固定大小(如10%)或百分比增长,默认为1MB FILEGROWTH = 20%

排序规则(COLLATE)

  • 定义数据库字符集、排序规则及大小写敏感度,如Chinese_PRC_CI_AS(不区分大小写、区分重音)。
  • 若未指定,则继承服务器默认排序规则,建议根据业务需求明确设置,避免后续字符集冲突。

附加选项(WITH)

  • FILESTREAM:用于存储大型二进制数据(如图片、视频),需在SQL Server配置中启用FILESTREAM功能。

实例演示

示例1:创建基础数据库

创建名为Company_DB的数据库,主数据文件初始大小100MB,最大增长至500MB,每次增长10%;日志文件初始50MB,无限制增长,每次增长20MB。

CREATE DATABASE Company_DB
ON PRIMARY
(
    NAME = 'Company_Data',
    FILENAME = 'D:\MSSQL_Data\Company_DB.mdf',
    SIZE = 100MB,
    MAXSIZE = 500MB,
    FILEGROWTH = 10%
)
LOG ON
(
    NAME = 'Company_Log',
    FILENAME = 'D:\MSSQL_Log\Company_DB.ldf',
    SIZE = 50MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 20%
);
GO

示例2:创建包含次要文件组的数据库

为大型电商数据库Ecommerce_DB创建主数据文件、两个次要数据文件(分散存储),并指定文件组FG_Index用于索引数据。

MSSQL如何创建服务器数据库?-图2
(图片来源网络,侵删)
CREATE DATABASE Ecommerce_DB
ON PRIMARY
(
    NAME = 'Ecommerce_Primary',
    FILENAME = 'D:\Data\Ecommerce_Primary.mdf',
    SIZE = 500MB,
    FILEGROWTH = 100MB
),
FILEGROUP FG_Index
(
    NAME = 'Ecommerce_Index1',
    FILENAME = 'D:\Data\Ecommerce_Index1.ndf',
    SIZE = 300MB,
    FILEGROWTH = 50MB
),
(
    NAME = 'Ecommerce_Index2',
    FILENAME = 'E:\Data\Ecommerce_Index2.ndf',
    SIZE = 300MB,
    FILEGROWTH = 50MB
)
LOG ON
(
    NAME = 'Ecommerce_Log',
    FILENAME = 'D:\Log\Ecommerce_Log.ldf',
    SIZE = 200MB,
    MAXSIZE = 20GB,
    FILEGROWTH = 100MB
);
GO

创建后的验证与管理

  1. 查看数据库状态
    执行以下查询,确认数据库是否创建成功且状态为ONLINE

    SELECT name, state_desc, create_date 
    FROM sys.databases 
    WHERE name = 'Company_DB';
    • state_descONLINE表示数据库可用;RESTORINGRECOVERING等状态需进一步处理。
  2. 修改数据库配置
    创建后可通过ALTER DATABASE调整参数,如修改文件大小、添加文件组等:

    ALTER DATABASE Company_DB
    ADD FILE
    (
        NAME = 'Company_Data2',
        FILENAME = 'D:\Data\Company_Data2.ndf',
        SIZE = 200MB,
        FILEGROWTH = 10%
    );
  3. 删除数据库
    若需删除数据库,使用DROP DATABASE语句(注意:此操作不可逆,且需确保无连接使用该数据库):

    DROP DATABASE Company_DB;

注意事项

  1. 性能优化

    MSSQL如何创建服务器数据库?-图3
    (图片来源网络,侵删)
    • 数据文件与日志文件应分别存放在不同物理磁盘,减少I/O竞争。
    • 文件增长增量建议设置为固定大小(如100MB)而非百分比,避免频繁扩展影响性能。
  2. 权限管理
    创建后需根据业务需求分配用户权限(如db_ownerdb_datareader),避免使用sa账户进行日常操作。

  3. 备份策略
    数据库创建后应立即执行完整备份,并制定定期备份计划(如完整备份+差异备份+事务日志备份),防止数据丢失。

相关问答FAQs

问题1:创建数据库时提示“无法打开物理文件,操作系统错误5(拒绝访问)”,如何解决?
解答:该错误通常是由于SQL Server服务账户对文件路径无写入权限导致,解决方法:

  1. 右键点击文件所在文件夹(如D:\MSSQL_Data),选择“属性”→“安全”→“编辑”;
  2. 添加NETWORK SERVICE或SQL Server服务账户(如MSSQLSERVER),赋予“完全控制”权限;
  3. 确认路径未被其他程序占用,后重新执行创建语句。

问题2:如何查看当前数据库的文件组及文件详情?
解答:可通过查询系统视图sys.database_filessys.filegroups获取文件及文件组信息:

-- 查看文件详情(逻辑名、物理路径、当前大小、最大大小等)
SELECT 
    name AS logical_file_name,
    physical_name AS file_path,
    size/128.0 AS current_size_MB,
    max_size/128.0 AS max_size_MB,
    growth AS growth_increment
FROM sys.database_files;
-- 查看文件组信息
SELECT 
    name AS filegroup_name,
    is_default AS is_default_filegroup
FROM sys.filegroups;
分享:
扫描分享到社交APP
上一篇
下一篇