Подтвердить что ты не робот

CREATE DATABASE с использованием файла по умолчанию

Я хочу создать SQL script, который создает базу данных. Прямо сейчас у меня есть это:

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.

Я знаю, проблема в том, что я не указал полный путь для имен файлов. Но я хочу иметь возможность запускать этот script независимо от структуры каталогов сервера базы данных. Есть ли способ использовать путь по умолчанию?

4b9b3361

Ответ 1

Вы можете создать базу данных без указания сведений о файле, например:

CREATE DATABASE Documents;

Ответ 2

Создайте базу данных "Документы" и дайте свойства файла через 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

Этот script более переносимый и может быть развернут на нескольких серверах без каких-либо изменений.

Ответ 3

См. Как найти каталог данных для экземпляра SQL Server?

Если вы используете SQL Server 2012 или выше, вы можете найти путь по умолчанию, используя

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

Затем вы можете использовать exec() для создания инструкции CREATE DATABASE.

Это полезно, если вы хотите, чтобы физические имена файлов вашей базы данных отличались от имени по умолчанию.

Ответ 4

Посмотрите, как создать Путь по умолчанию. Посмотрите, помогает ли это тому, что вы ищете.

Приветствия,

Ответ 5

Я считаю, что вы можете сделать

CREATE DATABASE [Documents]

без ON.... и он будет создан с настройками по умолчанию для пути и остальным.