2009-10-28 115 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