Sql server 2008 使用变量名创建数据库的SQL脚本

Sql server 2008 使用变量名创建数据库的SQL脚本,sql-server-2008,tsql,scripting,ddl,Sql Server 2008,Tsql,Scripting,Ddl,我试图创建一个通用脚本来创建数据库,并希望将数据库名称作为变量传递;但它不起作用 这是到目前为止我的代码 DECLARE @ID sysname; SET @ID = 'test' SET @ID = QUOTENAME(@ID) CREATE DATABASE @ID ON PRIMARY ( NAME = [' + @ID + '], FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER

我试图创建一个通用脚本来创建数据库,并希望将数据库名称作为变量传递;但它不起作用

这是到目前为止我的代码

DECLARE @ID sysname; 

SET @ID = 'test'
SET @ID = QUOTENAME(@ID)

CREATE DATABASE @ID

ON  PRIMARY
( NAME = [' + @ID + '], FILENAME =  N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\' +@ID+ '.mdf' , SIZE = 211968KB ,
 MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
   LOG ON 
( NAME = [' + @ID + '_log'], FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\'@ID + '_log.ldf' , SIZE = 149696KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
这给了我以下错误:

“@ID”附近的语法不正确


如果可以在SSMS中使用SQLCMD模式(查询菜单中的SQLCMD模式),或使用
SQLCMD.exe
执行脚本,则可以使用:

在命令行中,您需要注释掉
:setvar ID“test”
语句(即
--:setvar ID“test”
),然后像这样运行脚本

sqlcmd.exe -E -i YourScript.sql -v ID="real"
…假设Windows身份验证、SQL Server的本地默认实例和当前目录中的
YourScript.SQL

键是
-v
命令行选项,用于指定要设置的SQLCMD变量的名称及其值


使用像这样的SQLCMD变量基本上就是隐藏的功能。

我认为它不起作用了?:}是不起作用(抱歉),它会给出错误“靠近'@ID'的语法不正确”。欢迎使用SO,顺便说一句:}帮助您的问题的是提供您遇到的特定错误消息,您尝试过的内容无效等等。它将使那些试图帮助您的人不必运行您提供的来查看错误本身,也可能在他们的环境中看到不同的错误或没有错误,并且通常会减少摩擦来帮助您。我正试图以同样的方式创建一个登录名,可以访问具有相同变量名的datatabse,但我得到了错误..请帮助,我的代码是USE master;转到拒绝查看任何数据库到$(ID);转到“.”附近的错误语法不正确。
sqlcmd.exe -E -i YourScript.sql -v ID="real"