从查询创建数据库出错

时间:2012-03-12 12:33:37

标签: sql sql-server-2008 tsql

我正在尝试从我发送的SQL查询创建数据库。应该指出SQL不是我的强项。

在查询开始时声明以下内容:

:setvar DatabaseName "Database"
:setvar DefaultDataPath ""
:setvar DefaultLogPath ""

我在命令模式下运行查询并收到以下错误:

  

创建数据库...
  Msg 5105,Level 16,State 2,Line 1
  发生文件激活错误。物理文件名“DB.mdf”可能不正确。诊断并更正其他错误,然后重试该操作。

     

Msg 1802,Level 16,State 1,Line 1
  CREATE DATABASE失败。无法创建列出的某些文件名。检查相关错误   执行批处理时遇到错误。离开。

有什么想法吗?

由于

无法发布完整查询,因为它很长并且包含敏感信息,但会将版本减少到可能导致错误的位置。

SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;
SET NUMERIC_ROUNDABORT OFF;
GO

:setvar DatabaseName "Database"
:setvar DefaultDataPath ""
:setvar DefaultLogPath ""
GO

:on error exit
GO

USE [master]
GO

IF (DB_ID(N'$(DatabaseName)') IS NOT NULL
AND DATABASEPROPERTYEX(N'$(DatabaseName)','Status') <> N'ONLINE')
BEGIN
RAISERROR(N'The state of the target database, %s, is not set to ONLINE. To deploy to this database, its state must be set to ONLINE.', 16, 127,N'$(DatabaseName)') WITH NOWAIT
RETURN
END
GO

IF (DB_ID(N'$(DatabaseName)') IS NOT NULL) 
BEGIN
ALTER DATABASE [$(DatabaseName)]
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE [$(DatabaseName)];
END
GO

PRINT N'Creating $(DatabaseName)...'
GO

CREATE DATABASE [$(DatabaseName)]
ON 
PRIMARY(NAME = [DB], FILENAME = '$(DefaultDataPath)DB.mdf', SIZE = 3072 KB, FILEGROWTH = 1024 KB)
LOG ON (NAME = [DB_log], FILENAME = '$(DefaultLogPath)DB_log.ldf', SIZE = 1024 KB, MAXSIZE = 2097152 MB, FILEGROWTH = 10 %) COLLATE SQL_Latin1_General_CP1_CI_AS
GO

EXECUTE sp_dbcmptlevel [$(DatabaseName)], 100;

1 个答案:

答案 0 :(得分:2)

在以下行中添加一些物理路径:

:setvar DefaultDataPath ""

等;

:setvar DefaultDataPath "D:\Database"
相关问题