Sql 如果声明的变量DB存在,如何删除它?
我试图删除一个declare变量DB name,如果它已经存在的话。我有以下几点,但不断出现语法错误。“@DB_NAME”附近的语法不正确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
不能为数据库创建变量类型 如果我没有错,您希望通过在变量中输入来删除数据库 您可以使用一些动态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