СОЗДАТЬ БАЗУ ДАННЫХ, используя файл по умолчанию - PullRequest
24 голосов
/ 28 октября 2009

Я хочу создать сценарий 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.

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

Ответы [ 5 ]

63 голосов
/ 17 мая 2013

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

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

23 голосов
/ 28 октября 2009

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

CREATE DATABASE Documents;

3 голосов
/ 30 ноября 2016

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

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

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

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

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

1 голос
/ 28 октября 2009

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

CREATE DATABASE [Documents]

без ВКЛ .... и он будет создан со значениями по умолчанию для пути и остальных.

1 голос
/ 28 октября 2009

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

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...