动态Sql - 创建数据库 - 语法问题

时间:2014-04-17 10:40:54

标签: sql sql-server tsql syntax-error dynamic-sql

我遇到动态SQL脚本问题,尤其是这个问题:EXEC('

if db_id(''' + $(db) + ''') is null
BEGIN
    CREATE DATABASE ' + $(db) + '
END

if语句部分似乎工作正常,我知道这是因为如果数据库存在则创建数据库行没有运行但是当它需要运行时我只是在该行附近得到语法错误。

我也尝试过:

CREATE DATABASE ''' + $(db) + '''

没有运气

任何想法?

1 个答案:

答案 0 :(得分:1)

DECLARE @DB_NAME NVARCHAR(128) = N'Test_DB'
DECLARE @Sql NVARCHAR(MAX);

IF DB_ID(@DB_NAME) IS NULL
BEGIN
   SET @Sql = N' CREATE DATABASE ' + QUOTENAME(@DB_NAME)

   EXECUTE sp_executesql @Sql
END

重要提示

确保您的数据库名称符合Rules for Regular Identifiers