2009-10-28 158 views
21

我想创建一个创建数据库的SQL脚本。现在,我有这样的:使用默认路径中的文件创建数据库

CREATE DATABASE [Documents] ON PRIMARY 
(NAME = N'Documents', FILENAME = N'Documents.mdf') 
LOG ON 
(NAME = N'Documents_log', FILENAME = N'Documents_log.ldf') 
COLLATE SQL_Latin1_General_CP1_CI_AS 

然而,这会产生以下错误:

Msg 5105, Level 16, State 2, Line 2 
A file activation error occurred. The physical file name 'Documents.mdf' may be incorrect. Diagnose and correct additional errors, and retry the operation. 
Msg 1802, Level 16, State 1, Line 2 
CREATE DATABASE failed. Some file names listed could not be created. Check related errors. 

我知道这个问题是我没有为指定文件名完全合格的路径。但是我希望能够运行这个脚本,而不管数据库服务器的目录结构如何。有什么方法可以使用默认路径吗?

回答

20

您可以在不指定文件的详细信息创建一个数据库,如:

CREATE DATABASE文件;

+7

是的,但是如果我需要指定像SIZE和FILEGROWTH这样的其他属性呢? 我见过使用XP的解决方案来读取注册表,但如果你没有运行在默认实例上呢?该注册表项/值不会给出正确答案。 仍在搜索,所以我不认为这回答了我自己。 – 2010-07-29 13:25:54

+6

创建数据库后,添加alter database脚本以指定其他属性,如SIZE和FILEGROWTH。 – 2012-10-24 03:15:54

1

看看如何创建一个Default Path。看看它是否有助于你在找什么。

干杯,

+0

proost!,prost!,santé,salute,salud !,živjeli!, kippis! – Roel 2017-09-07 13:26:36

1

我相信你能做到

CREATE DATABASE [Documents] 

没有ON ....,它会得到与默认值路径,其余的创建。

51

创建数据库'文档'并通过改变提供文件属性。

USE [master] 
GO 

CREATE DATABASE [Documents] 
GO 

ALTER DATABASE [Documents] MODIFY FILE 
(NAME = N'Documents', SIZE = 512MB, MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) 
GO 

ALTER DATABASE [Documents] MODIFY FILE 
(NAME = N'Documents_log', SIZE = 256MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10%) 
GO 

该脚本更具可移植性,可以在不做任何修改的情况下部署到多个服务器中。

+5

对我来说,这是解决方案,而不是标记的解决方案。 – 2013-11-27 18:05:17

3

How do I find the data directory for a SQL Server instance?

如果您正在使用SQL Server 2012或更高版本,你可以找到使用

select 
    InstanceDefaultDataPath = serverproperty('InstanceDefaultDataPath'), 
    InstanceDefaultLogPath = serverproperty('InstanceDefaultLogPath') 

然后,您可以重复使用exec()来构建你的CREATE DATABASE语句的默认路径。

如果您希望数据库的物理文件名与默认名称不同,这很有用。

+0

谢谢。但是,如何在CREATE DATABASE脚本中使用它?执行CREATE DATABASE [Documents] (NAME = N'Documents',FILENAME = @InstanceDefaultDataPath + N'Documents.mdf'...给出错误 - 您无法将查询结果与CREATE中的DB dame连接起来DATABASE脚本 – DaveBoltman 2018-02-07 09:35:58