SQLServer创建数据库命令的语法是什么?

在SQL Server中创建数据库是数据库管理的核心操作之一,掌握其命令语法和参数配置对于数据库管理员和开发人员至关重要,本文将详细讲解SQL Server创建数据库的完整命令语法,包括各参数的作用、示例用法及注意事项,帮助用户全面理解并灵活应用。

sqlserver创建数据库命令
(图片来源网络,侵删)

SQL Server创建数据库主要通过CREATE DATABASE语句实现,其基本语法结构如下:

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'|'filestream_path'}
    [ , SIZE = size [ KB | MB | GB | TB ] ]
    [ , MAXSIZE = { max_size [ KB | MB | GB | TB ] | UNLIMITED } ]
    [ , FILEGROWTH = growth_increment [ KB | MB | GB | TB | % ] ]
  )
}
<filegroup>::=
{
  FILEGROUP filegroup_name [ CONTAINS FILESTREAM ] [ DEFAULT ]
  <filespec> [ ,...n ]
}
<option>::=
{
  (
    FILESTREAM ( 
      [ NON_TRANSACTED_ACCESS = { OFF | READ_ONLY | FULL } ]
      [ , DIRECTORY_NAME = 'directory_name' ]
    )
  )
}

核心参数详解

  1. database_name
    数据库名称必须符合SQL Server标识符规则,最长128个字符,且在SQL Server实例中唯一,建议使用有意义的名称,避免保留关键字(如mastertempdb等)。

  2. ON子句
    用于定义数据库的数据文件和文件组。PRIMARY指定主数据文件(.mdf),若未明确指定,则第一个文件自动成为主文件,每个文件需包含以下参数:

    • NAME:逻辑文件名,用于SQL Server内部引用。
    • FILENAME:操作系统中的物理路径及文件名,需确保SQL Server服务账户对该路径有读写权限。
    • SIZE:初始文件大小,默认值为MB单位,最小值为512 KB,若未指定,默认为model数据库大小。
    • MAXSIZE:文件最大增长限制,设置为UNLIMITED表示无限制。
    • FILEGROWTH:文件增长增量,可使用表示按当前大小的百分比增长,默认值为MB单位。
  3. LOG ON子句
    用于定义事务日志文件.ldf),语法与数据文件类似,若未指定,SQL Server会自动创建日志文件,大小为数据文件大小的25%,最大为64 GB。

    sqlserver创建数据库命令
    (图片来源网络,侵删)
  4. FILEGROUP子句
    用于创建文件组,将数据文件分组管理,便于优化性能和分配存储。DEFAULT表示该文件组为默认文件组。

  5. COLLATE子句
    指定数据库的排序规则,如SQL_Latin1_General_CP1_CI_AS(不区分大小写、区分重音),若未指定,继承实例的默认排序规则。

  6. WITH子句
    用于配置高级选项,如FILESTREAM,支持将非结构化数据(如文档、媒体文件)直接存储在NTFS文件系统中。

示例应用

创建简单数据库

CREATE DATABASE SalesDB
ON PRIMARY (
    NAME = SalesDB_Data,
    FILENAME = 'C:\SQLData\SalesDB.mdf',
    SIZE = 5MB,
    MAXSIZE = 100MB,
    FILEGROWTH = 10%
)
LOG ON (
    NAME = SalesDB_Log,
    FILENAME = 'C:\SQLLog\SalesDB.ldf',
    SIZE = 2MB,
    MAXSIZE = 50MB,
    FILEGROWTH = 1MB
);

此示例创建名为SalesDB的数据库,主数据文件初始大小为5MB,最大增长至100MB,按10%增量增长;日志文件初始大小为2MB,最大50MB,固定增长1MB。

sqlserver创建数据库命令
(图片来源网络,侵删)

创建多文件组数据库

CREATE DATABASE InventoryDB
ON PRIMARY (
    NAME = InventoryDB_Data,
    FILENAME = 'C:\SQLData\InventoryDB.mdf',
    SIZE = 10GB,
    FILEGROWTH = 1GB
),
FILEGROUP FG1 (
    NAME = InventoryDB FG1 Data,
    FILENAME = 'D:\Data\InventoryDB_FG1.ndf',
    SIZE = 5GB,
    FILEGROWTH = 512MB
),
FILEGROUP FG2 (
    NAME = InventoryDB FG2 Data,
    FILENAME = 'E:\Data\InventoryDB_FG2.ndf',
    SIZE = 5GB,
    FILEGROWTH = 512MB
)
LOG ON (
    NAME = InventoryDB_Log,
    FILENAME = 'C:\SQLLog\InventoryDB.ldf',
    SIZE = 8GB,
    FILEGROWTH = 1GB
);

该示例创建包含两个文件组(FG1FG2)的数据库,适用于将不同表分散存储在不同磁盘以提高I/O性能。

创建支持FILESTREAM的数据库

CREATE DATABASE DocumentDB
ON PRIMARY (
    NAME = DocumentDB_Data,
    FILENAME = 'C:\SQLData\DocumentDB.mdf',
    SIZE = 3GB,
    FILEGROWTH = 1GB
),
FILEGROUP DocumentFS CONTAINS FILESTREAM (
    NAME = DocumentFS_Data,
    FILENAME = 'C:\FSData\DocumentFS'
)
LOG ON (
    NAME = DocumentDB_Log,
    FILENAME = 'C:\SQLLog\DocumentDB.ldf',
    SIZE = 1GB
)
WITH (FILESTREAM (NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = 'DocumentFS'));

此示例创建支持FILESTREAM的数据库,可将文档等非结构化数据存储在文件系统中,同时支持非事务性访问。

注意事项

  1. 权限要求:执行CREATE DATABASE需具备CREATE DATABASE服务器权限,或属于sysadmin固定服务器角色。
  2. 路径验证:物理路径必须存在,且SQL Server服务账户需有权限访问,建议将数据文件和日志文件放在不同磁盘以避免I/O争用。
  3. 文件增长策略:合理设置FILEGROWTHMAXSIZE,避免因文件自动增长导致性能下降或磁盘空间耗尽。
  4. 排序规则影响:排序规则会影响字符串比较和排序操作,跨服务器迁移数据库时需保持排序规则一致。
  5. 命名规范:数据文件和日志文件建议使用不同的扩展名(.mdf.ndf.ldf),便于管理。

相关问答FAQs

Q1: 如何修改已创建数据库的文件大小和增长策略?
A1: 使用ALTER DATABASE语句修改文件属性,将SalesDB的主数据文件最大大小改为200MB,并设置固定增长2MB:

ALTER DATABASE SalesDB
MODIFY FILE (
    NAME = SalesDB_Data,
    MAXSIZE = 200MB,
    FILEGROWTH = 2MB
);

Q2: 创建数据库时提示“设备资源不足”如何解决?
A2: 此错误通常因磁盘空间不足或文件路径权限问题导致,可按以下步骤排查:

  1. 检查指定路径的剩余空间是否满足SIZEMAXSIZE要求;
  2. 确认SQL Server服务账户对目标文件夹有完全控制权限;
  3. 尝试将文件路径改为其他磁盘或减小初始文件大小。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/418675.html<

(0)
运维的头像运维
上一篇2025-10-23 06:51
下一篇 2025-10-23 06:55

相关推荐

  • Linux新建数据库命令有哪些?

    在Linux系统中,新建数据库的命令因数据库类型的不同而有所差异,常见的数据库包括MySQL、PostgreSQL、MongoDB和SQLite等,以下将分别介绍这些数据库在Linux环境下的新建命令及操作步骤,并辅以表格对比不同数据库的关键操作,帮助用户快速掌握新建数据库的方法,对于关系型数据库MySQL,新……

    2025-11-05
    0
  • 命令行如何创建数据库?

    在命令行中创建数据库是数据库管理中的基础操作,不同数据库管理系统(如MySQL、PostgreSQL、SQLite等)的命令和步骤存在差异,但核心逻辑均围绕“连接服务-执行创建-验证结果”展开,以下将以MySQL和PostgreSQL为例,详细说明命令行创建数据库的完整流程,包括环境准备、命令执行、权限配置及常……

    2025-10-31
    0
  • 创建数据库文件的具体命令是什么?

    创建数据库文件的命令是数据库管理中的基础操作,不同数据库管理系统(DBMS)如MySQL、PostgreSQL、SQLite、SQL Server等,其命令语法和流程存在差异,以下将详细介绍主流DBMS中创建数据库文件的命令,涵盖语法、参数说明、示例及注意事项,帮助用户根据实际需求选择合适的方式,在MySQL中……

    2025-10-31
    0
  • DB2创建数据库命令有哪些具体参数与步骤?

    在数据库管理系统中,DB2(IBM Database 2)作为一种广泛使用的关系型数据库,提供了强大的数据存储和管理功能,创建数据库是DB2数据库管理的核心操作之一,掌握其创建命令对于数据库管理员和开发人员至关重要,本文将详细介绍DB2创建数据库的相关命令、参数说明、操作步骤及注意事项,帮助读者全面理解并熟练应……

    2025-10-30
    0
  • SQL新建数据库命令是什么?

    在关系型数据库管理系统中,SQL(Structured Query Language)是用于管理数据库的标准语言,其中新建数据库是最基础的操作之一,不同数据库管理系统(如MySQL、PostgreSQL、SQL Server、Oracle等)虽然都支持SQL标准,但在具体实现上可能存在语法差异,本文将详细介绍主……

    2025-10-23
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注