A. 创建未指定文件的数据库

以下示例创建名为 mytest 的数据库,并创建相应的主文件和事务日志文件。因为语句没有 <filespec> 项,所以主数据库文件的大小为 model 数据库主文件的大小。事务日志将设置为下列值中的较大者:512 KB 或主数据文件大小的 25%。因为没有指定 MAXSIZE,文件可以增大到填满所有可用的磁盘空间为止。此示例演示如何在创建 mytest 数据库之前删除名为 mytest 的数据库(如果它存在)。

USE master;
GO
CREATE DATABASE mytest;
GO
-- Verify the database files and sizes
SELECT name, size, size*1.0/128 AS [Size in MBs]
FROM sys.master_files
WHERE name = N'mytest';
GO

 

B. 创建指定数据和事务日志文件的数据库

下面的示例将创建数据库 Sales。因为没有使用关键字 PRIMARY,第一个文件 (Sales_dat) 将成为主文件。因为在 Sales_dat 文件的 SIZE 参数中没有指定 MB 或 KB,将使用 MB 并按 MB 分配。Sales_log 文件以 MB 为单位进行分配,因为 SIZE 参数中显式声明了 MB 后缀。

USE master;
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\saledat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
    FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
GO

C. 通过指定多个数据和事务日志文件创建数据库

以下示例创建数据库 Archive,该数据库具有三个 100-MB 数据文件和两个 100-MB 事务日志文件。主文件是列表中的第一个文件,并使用 PRIMARY 关键字显式指定。事务日志文件在 LOG ON 关键字后指定。请注意用于 FILENAME 选项中各文件的扩展名:.mdf 用于主数据文件,.ndf 用于辅助数据文件,.ldf 用于事务日志文件。此示例将数据库放置于 D 驱动器上,而非 master 数据库中。

USE master;
GO
CREATE DATABASE Archive
ON
PRIMARY 
    (NAME = Arch1,
    FILENAME = 'D:\SalesData\archdat1.mdf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch2,
    FILENAME = 'D:\SalesData\archdat2.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
    ( NAME = Arch3,
    FILENAME = 'D:\SalesData\archdat3.ndf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20)
LOG ON
   (NAME = Archlog1,
    FILENAME = 'D:\SalesData\archlog1.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20),
   (NAME = Archlog2,
    FILENAME = 'D:\SalesData\archlog2.ldf',
    SIZE = 100MB,
    MAXSIZE = 200,
    FILEGROWTH = 20) ;
GO

 

D. 创建具有文件组的数据库

以下示例创建数据库 Sales,该数据库具有以下文件组:

  • 包含文件 Spri1_datSpri2_dat 的主文件组。将这些文件的 FILEGROWTH 增量指定为 15%

  • 名为 SalesGroup1 的文件组,其中包含文件 SGrp1Fi1SGrp1Fi2

  • 名为 SalesGroup2 的文件组,其中包含文件 SGrp2Fi1SGrp2Fi2

此示例将数据和日志文件放置于不同的磁盘上,以便提高性能。

USE master;
GO
CREATE DATABASE Sales
ON PRIMARY
( NAME = SPri1_dat,
    FILENAME = 'D:\SalesData\SPri1dat.mdf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15% ),
( NAME = SPri2_dat,
    FILENAME = 'D:\SalesData\SPri2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 15% ),
FILEGROUP SalesGroup1
( NAME = SGrp1Fi1_dat,
    FILENAME = 'D:\SalesData\SG1Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
( NAME = SGrp1Fi2_dat,
    FILENAME = 'D:\SalesData\SG1Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
FILEGROUP SalesGroup2
( NAME = SGrp2Fi1_dat,
    FILENAME = 'D:\SalesData\SG2Fi1dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 ),
( NAME = SGrp2Fi2_dat,
    FILENAME = 'D:\SalesData\SG2Fi2dt.ndf',
    SIZE = 10,
    MAXSIZE = 50,
    FILEGROWTH = 5 )
LOG ON
( NAME = Sales_log,
    FILENAME = 'E:\SalesLog\salelog.ldf',
    SIZE = 5MB,
    MAXSIZE = 25MB,
    FILEGROWTH = 5MB ) ;
GO

E. 附加数据库

以下示例分离在示例 D 中创建的数据库 Archive,然后使用 FOR ATTACH 子句附加该数据库。Archive 定义为具有多个数据和日志文件。但是,由于文件的位置自创建后没有发生更改,所以只需在 FOR ATTACH 子句中指定主文件。从 SQL Server 2005 开始,要附加的数据库中包含的所有全文文件也将随数据库一起附加。

USE master;
GO
sp_detach_db Archive;
GO
CREATE DATABASE Archive
      ON (FILENAME = 'D:\SalesData\archdat1.mdf')
      FOR ATTACH ;
GO

 

F. 创建数据库快照

以下示例创建数据库快照 sales_snapshot0600。由于数据库快照是只读的,所以不能指定日志文件。为了符合语法要求,指定了源数据库中的每个文件,但没有指定文件组。

该示例的源数据库是在示例 D 中创建的 Sales 数据库。

USE master;
GO
CREATE DATABASE sales_snapshot0600 ON
    ( NAME = SPri1_dat, FILENAME = 'D:\SalesData\SPri1dat_0600.ss'),
    ( NAME = SPri2_dat, FILENAME = 'D:\SalesData\SPri2dt_0600.ss'),
    ( NAME = SGrp1Fi1_dat, FILENAME = 'D:\SalesData\SG1Fi1dt_0600.ss'),
    ( NAME = SGrp1Fi2_dat, FILENAME = 'D:\SalesData\SG1Fi2dt_0600.ss'),
    ( NAME = SGrp2Fi1_dat, FILENAME = 'D:\SalesData\SG2Fi1dt_0600.ss'),
    ( NAME = SGrp2Fi2_dat, FILENAME = 'D:\SalesData\SG2Fi2dt_0600.ss')
AS SNAPSHOT OF Sales ;
GO

G. 创建数据库并指定排序规则名称和选项

下面的示例将创建数据库 MyOptionsTest。指定了排序规则名称,并将 TRUSTYWORTHYDB_CHAINING 选项设置为 ON

USE master;
GO
IF DB_ID (N'MyOptionsTest') IS NOT NULL
DROP DATABASE MyOptionsTest;
GO
CREATE DATABASE MyOptionsTest
COLLATE French_CI_AI
WITH TRUSTWORTHY ON, DB_CHAINING ON;
GO
--Verifying collation and option settings.
SELECT name, collation_name, is_trustworthy_on, is_db_chaining_on
FROM sys.databases
WHERE name = N'MyOptionsTest';
GO

H. 附加已移动的全文目录

以下示例同时附加全文目录 AdvWksFtCat 以及 AdventureWorks2008R2 数据和日志文件。在该示例中,将全文目录从其默认位置移动到新位置 c:\myFTCatalogs。数据和日志文件保留在其默认位置。

USE master;
GO
--Detach the AdventureWorks2008R2 database
sp_detach_db AdventureWorks2008R2;
GO
-- Physically move the full text catalog to the new location.
--Attach the AdventureWorks2008R2 database and specify the new location of the full-text catalog.
CREATE DATABASE AdventureWorks2008R2 ON
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_Data.mdf'),
    (FILENAME = 'c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data\AdventureWorks2008R2_log.ldf'),
    (FILENAME = 'c:\myFTCatalogs\AdvWksFtCat')
FOR ATTACH;
GO

I. 创建指定一个行文件组和两个 FILESTREAM 文件组的数据库

下面的示例将创建数据库 FileStreamDB。该数据库在创建之时包含一个行文件组和两个 FILESTREAM 文件组。每个文件组都包含一个文件:

  • FileStreamDB_data 包含行数据。它包含一个文件,即带有默认路径的 FileStreamDB_data.mdf

  • FileStreamPhotos 包含 FILESTREAM 数据。它包含一个 FILESTREAM 数据容器 FSPhotos,位于 C:\MyFSfolder\Photos。它被标记为默认 FILESTREAM 文件组。

  • FileStreamResumes 包含 FILESTREAM 数据。它包含一个位于 C:\MyFSfolder\Resumes 中的 FILESTREAM 数据容器 FSResumes

    USE master;
    GO
    IF DB_ID (N'FileStreamDB') IS NOT NULL
    DROP DATABASE FileStreamDB;
    GO
    -- Get the SQL Server data path.
    DECLARE @data_path nvarchar(256);
    SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
                      FROM master.sys.master_files
                      WHERE database_id = 1 AND file_id = 1);

     -- Execute the CREATE DATABASE statement.
    EXECUTE ('CREATE DATABASE FileStreamDB
    ON PRIMARY
        (
        NAME = FileStreamDB_data
        ,FILENAME = ''' + @data_path + 'FileStreamDB_data.mdf''
        ,SIZE = 10MB
        ,MAXSIZE = 50MB
        ,FILEGROWTH = 15%
        ),
    FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT
        (
        NAME = FSPhotos
        ,FILENAME = ''C:\MyFSfolder\Photos''
    -- SIZE, MAXSIZE, FILEGROWTH should not be specified here.
    -- If they are specified an error will be raised.
        ),
    FILEGROUP FileStreamResumes CONTAINS FILESTREAM
        (
        NAME = FileStreamResumes
        ,FILENAME = ''C:\MyFSfolder\Resumes''
        )
    LOG ON
        (
        NAME = FileStream_log
        ,FILENAME = ''' + @data_path + 'FileStreamDB_log.ldf''
        ,SIZE = 5MB
        ,MAXSIZE = 25MB
        ,FILEGROWTH = 5MB
        )'
    );
    GO

 

posted on 2014-10-30 10:25  mggong  阅读(517)  评论(0)    收藏  举报