Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如果声明的变量DB存在,如何删除它?_Sql_Sql Server - Fatal编程技术网

Sql 如果声明的变量DB存在,如何删除它?

Sql 如果声明的变量DB存在,如何删除它?,sql,sql-server,Sql,Sql Server,我试图删除一个declare变量DB name,如果它已经存在的话。我有以下几点,但不断出现语法错误。“@DB_NAME”附近的语法不正确 不能为数据库创建变量类型 如果我没有错,您希望通过在变量中输入来删除数据库 您可以使用一些动态sql来做同样的事情 这不是精确的脚本,您可以调整动态sql并获得所需的结果 USE MASTER GO DECLARE @DB_NAME AS VARCHAR(50),@ex_sql varchar(max) SET @DB_NAME = 'TEST' DECL

我试图删除一个declare变量DB name,如果它已经存在的话。我有以下几点,但不断出现语法错误。“@DB_NAME”附近的语法不正确


不能为数据库创建变量类型

如果我没有错,您希望通过在变量中输入来删除数据库

您可以使用一些动态sql来做同样的事情 这不是精确的脚本,您可以调整动态sql并获得所需的结果

USE MASTER
GO

DECLARE @DB_NAME AS VARCHAR(50),@ex_sql varchar(max)
SET @DB_NAME = 'TEST'
DECLARE @DB_PATH AS VARCHAR(200)
SET @DB_PATH = 'C:\Clients\TEST PILOT\F - Raw Data\'

IF EXISTS(SELECT * FROM sys.sysdatabases where name=@DB_NAME)
begin
set @ex_sql='drop database '+@DB_NAME
exec @ex_sql
end 
set @ex_sql=''
set @ex_sql='CREATE DATABASE '+@DB_NAME+
' ON 
(NAME = '''+@DB_NAME+''', 
    FILENAME = ''C:\Clients\TEST PILOT\F - Raw Data\TEST.mdf'', 
    SIZE = 1GB , 
    MAXSIZE = UNLIMITED, 
    FILEGROWTH = 1GB
    )

LOG ON
    (NAME = ''TEST_log'', 
     FILENAME = ''C:\Clients\TEST PILOT\F - Raw Data\TEST.ldf'', 
     SIZE = 2024KB , 
     MAXSIZE = 2GB , 
     FILEGROWTH = 10%
    )
GO'
exec @ex_sql

我认为问题在于反斜杠的使用不正确。@DavidBrabant在编辑中修复了该问题。问题中的代码应该在没有问题的情况下运行。DROP语句不正确。请将其更改为DROP DATABASE[@DB\u NAME],并同样更改create语句,如create DATABASE[@DB\u NAME]
USE MASTER
GO

DECLARE @DB_NAME AS VARCHAR(50),@ex_sql varchar(max)
SET @DB_NAME = 'TEST'
DECLARE @DB_PATH AS VARCHAR(200)
SET @DB_PATH = 'C:\Clients\TEST PILOT\F - Raw Data\'

IF EXISTS(SELECT * FROM sys.sysdatabases where name=@DB_NAME)
begin
set @ex_sql='drop database '+@DB_NAME
exec @ex_sql
end 
set @ex_sql=''
set @ex_sql='CREATE DATABASE '+@DB_NAME+
' ON 
(NAME = '''+@DB_NAME+''', 
    FILENAME = ''C:\Clients\TEST PILOT\F - Raw Data\TEST.mdf'', 
    SIZE = 1GB , 
    MAXSIZE = UNLIMITED, 
    FILEGROWTH = 1GB
    )

LOG ON
    (NAME = ''TEST_log'', 
     FILENAME = ''C:\Clients\TEST PILOT\F - Raw Data\TEST.ldf'', 
     SIZE = 2024KB , 
     MAXSIZE = 2GB , 
     FILEGROWTH = 10%
    )
GO'
exec @ex_sql