2009-10-28 4 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를 사용하는 솔루션을 보았지만 기본 인스턴스에서 실행하지 않으면 어떻게됩니까? 해당 레지스트리 키/값은 올바른 대답을 제공하지 않습니다. 아직 검색 중이므로 직접 대답 해 보지 않았습니다. –

+6

데이터베이스 작성 후 SIZE 및 FILEGROWTH와 같은 추가 속성을 지정하기위한 alter database 스크립트를 추가하십시오. –

1

Default Path을 만드는 방법을 살펴보십시오. 당신이 찾고있는 것에 도움이되는지보십시오. 당신은 같은 파일 세부 사항을 지정하지 않고 데이터베이스를 만들 수 있습니다

+0

proost !, prostate, santé, salute, salud !, živjeli!, kippis! – Roel

1

나는 당신이 ON없이

CREATE DATABASE [Documents] 

을 할 수 있다고 생각합니다 .... 그것은 경로와 나머지 기본값으로 생성 얻을 것이다.

51

'Documents'데이터베이스를 만들고 alter를 통해 파일 속성을 지정하십시오.

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 

이 스크립트는 더 이식 가능하며 수정없이 여러 서버에 배포 할 수 있습니다. 당신은 SQL 서버 2012 이상 사용하는 경우

+5

나를 위해, 이것은 해결책이 아니라 표시된 것입니다. –

3

How do I find the data directory for a SQL Server instance?를 참조하십시오, 당신은 당신의 CREATE DATABASE 문을 구성 할

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

그런 다음 사용할 수 있습니다 간부 인()를 사용하여 기본 경로를 찾을 수 있습니다.

데이터베이스의 실제 파일 이름이 기본 이름과 다른 경우에 유용합니다.

+0

감사합니다. 그러나 CREATE DATABASE 스크립트에서 이것을 어떻게 사용합니까? CREATE DATABASE [Documents] (NAME = N'Documents ', FILENAME = @InstanceDefaultDataPath + N'Documents.mdf'... 오류 발생 - 쿼리 결과를 CREATE 내 DB dame과 연결할 수 없음 데이터베이스 스크립트 – DaveBoltman

관련 문제