Ответ 1
Вы можете создать базу данных без указания сведений о файле, например:
CREATE DATABASE Documents;
Я хочу создать 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 независимо от структуры каталогов сервера базы данных. Есть ли способ использовать путь по умолчанию?
Вы можете создать базу данных без указания сведений о файле, например:
CREATE DATABASE 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
Этот script более переносимый и может быть развернут на нескольких серверах без каких-либо изменений.
См. Как найти каталог данных для экземпляра SQL Server?
Если вы используете SQL Server 2012 или выше, вы можете найти путь по умолчанию, используя
select
InstanceDefaultDataPath = serverproperty('InstanceDefaultDataPath'),
InstanceDefaultLogPath = serverproperty('InstanceDefaultLogPath')
Затем вы можете использовать exec() для создания инструкции CREATE DATABASE.
Это полезно, если вы хотите, чтобы физические имена файлов вашей базы данных отличались от имени по умолчанию.
Посмотрите, как создать Путь по умолчанию. Посмотрите, помогает ли это тому, что вы ищете.
Приветствия,
Я считаю, что вы можете сделать
CREATE DATABASE [Documents]
без ON.... и он будет создан с настройками по умолчанию для пути и остальным.