Red*_*vil -1 sql-server t-sql sql-server-2012
当我在不指定 ldf 文件的情况下运行此查询时,它会自动创建 ldf 文件。
Declare @DBname nvarchar(50) = 'Test'
Declare @path nvarchar(50) = 'D:\DB'
Declare @query nvarchar(max)
set @query = '
CREATE DATABASE ' + @DBname + '
ON
( NAME = ' +@DBname+',
FILENAME = '''+@path+'\'+@DBname+'.mdf'+''',
SIZE = 1024,
MAXSIZE = unlimited,
FILEGROWTH = 500 )
'
exec (@query)
Run Code Online (Sandbox Code Playgroud)
但是当我运行这个查询时:
Declare @DBname nvarchar(50) = 'Test'
Declare @path nvarchar(50) = 'D:\DB'
Declare @query nvarchar(max)
set @query = '
CREATE DATABASE ' + @DBname + '
ON
( NAME = '+@DBname+'_log'+',
FILENAME = ''' +@path+'\'+@DBname+'_log.ldf'+''',
SIZE = 100,
MAXSIZE = unlimited,
FILEGROWTH = 100 );
'
exec (@query)
Run Code Online (Sandbox Code Playgroud)
它创建 2 个 .ldf 文件而没有 .mdf 文件。我不明白为什么它会像上面的查询那样自动创建 2 个 .ldf 文件而不是 mdf 文件:
如文档中所述,指定您正在创建日志文件的正确方法是使用CREATE DATABASE ... LOG ON (...)
- 您正在使用ON (...)
.
您的第二位代码只是指定创建一个.ldf
用作文件扩展名的 MDF 文件(数据文件)。要创建一个日志文件,你需要更换ON
具有LOG ON
如下。
Declare @DBname nvarchar(50) = 'Test'
Declare @path nvarchar(50) = 'D:\DB'
Declare @query nvarchar(max)
set @query = '
CREATE DATABASE ' + @DBname + '
--Create the data file using ON
ON
( NAME = '+@DBname+',
FILENAME = ''' +@path+'\'+@DBname+'.mdf'+''',
SIZE = 100,
MAXSIZE = unlimited,
FILEGROWTH = 100 )
--Create the log file using LOG ON
LOG ON
( NAME = '+@DBname+'_log'+',
FILENAME = ''' +@path+'\'+@DBname+'_log.ldf'+''',
SIZE = 100,
MAXSIZE = unlimited,
FILEGROWTH = 100 );
'
exec (@query)
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,您的代码都会创建一个 SQL 数据文件,并且会使用model
数据库中的设置自动创建日志文件。两者之间的唯一区别是文件的名称——SQL Server 将接受任何文件扩展名(甚至完全没有)作为数据库文件的名称。
归档时间: |
|
查看次数: |
149 次 |
最近记录: |