首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建仅使用ldf文件创建的数据库2 .ldf文件

创建仅使用ldf文件创建的数据库2 .ldf文件
EN

Database Administration用户
提问于 2019-08-28 08:49:07
回答 1查看 208关注 0票数 -1

当我在没有指定ldf文件的情况下运行此查询时,它会自动创建ldf文件。

代码语言:javascript
复制
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)

但是当我运行这个查询时:

代码语言:javascript
复制
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)

它创建了2个没有.ldf文件的.mdf文件。我不明白为什么它会自动创建2个.ldf文件,而不是像在上面的查询中那样自动创建mdf文件:

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-08-28 08:59:14

正如文献资料中详细介绍的,指定要创建日志文件的正确方法是使用CREATE DATABASE ... LOG ON (...) --您正在使用ON (...)

第二段代码只是指定使用.ldf作为文件扩展名来创建MDF文件(数据文件)。要创建日志文件,您需要将ON替换为LOG ON,如下所示。

代码语言:javascript
复制
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)

在这两种情况下,代码都会创建一个SQL数据文件,日志文件将使用model数据库中的设置自动创建。两者之间唯一的区别是文件的名称- Server将接受任何文件扩展名(甚至完全缺少)作为数据库文件的名称。

票数 8
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/246425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档