rec*_*ive 24 sql database sql-server
我想创建一个创建数据库的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
Run Code Online (Sandbox Code Playgroud)
但是,这会生成以下错误:
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.
Run Code Online (Sandbox Code Playgroud)
我知道问题是我没有为文件名指定完全限定的路径.但我想能够运行此脚本,无论数据库服务器的目录结构如何.有没有办法使用默认路径?
Gay*_*ake 68
创建数据库'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
Run Code Online (Sandbox Code Playgroud)
此脚本更具可移植性,无需任何修改即可部署在多个服务器中.
Dam*_*vic 23
您可以创建数据库而无需指定文件详细信息,例如:
创建数据库文档;
小智 5
如果您使用的是 SQL Server 2012 或更高版本,您可以使用以下命令找到默认路径
select
InstanceDefaultDataPath = serverproperty('InstanceDefaultDataPath'),
InstanceDefaultLogPath = serverproperty('InstanceDefaultLogPath')
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用 exec() 构建 CREATE DATABASE 语句。
如果您希望数据库的物理文件名与默认名称不同,这非常有用。