Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 如何声明数据库_Sql_Sql Server - Fatal编程技术网

Sql 如何声明数据库

Sql 如何声明数据库,sql,sql-server,Sql,Sql Server,当我尝试以下操作时,如何将数据库声明为: declare @Database1 [$(Database1)] 它表示“列、参数或变量#8:找不到数据类型Database1” 更新: 所以我要做的是创建一个变量,使其引用数据库,然后我可以将该变量包含在输出语句中。我正在使用visual studio,其中使用引用调用数据库,但希望将该引用设置为变量: 目前我有: declare @Database1 [$(Database1)] ... OUTPUT ''+@Database1+'.dbo.

当我尝试以下操作时,如何将数据库声明为:

declare @Database1 [$(Database1)]
它表示“列、参数或变量#8:找不到数据类型Database1”

更新:

所以我要做的是创建一个变量,使其引用数据库,然后我可以将该变量包含在输出语句中。我正在使用visual studio,其中使用引用调用数据库,但希望将该引用设置为变量:

目前我有:

declare @Database1 [$(Database1)]

...

OUTPUT ''+@Database1+'.dbo.Package' 'TableName', 'PackageID', inserted.PackageId, 
        Core.updXMLFragment ('StatusID', inserted.StatusID, Deleted.StatusID)
        INTO @OutputList
就像我说的,当我尝试上面的方法时,我得到了一个错误。我知道
[$(Database1)]
是对数据库的合法引用,只需要知道如何将其包含到输出语句中,以便在我将其移动到SSMS时,它将其显示为[Database1],而不是错误


[$(Database1)]
的原因是,如果我们更改了数据库名称,我们不必在代码中更改它,因为我们使用此引用调用数据库而不是数据库名称本身。

尝试使用
动态SQL

DECLARE @Database SYSNAME = 'master'

DECLARE @SQL NVARCHAR(MAX)
SET @SQL = '
USE ' + QUOTENAME(@Database) + '

SELECT DB_NAME()
'

--PRINT @SQL
EXEC sys.sp_executesql @SQL
可以使用来声明相同的内容

:setvar dbname "TEST" 

CREATE DATABASE $(dbname)
GO
ALTER DATABASE $(dbname) SET COMPATIBILITY_LEVEL = 90
GO
ALTER DATABASE $(dbname) SET RECOVERY SIMPLE 
GO

只是附带说明一下,我更喜欢使用
QUOTENAME
正确引用,而不是手动将矩形括号打在自己身上。我正在考虑将变量添加到输出变量中:例如输出“”+@Database1+“dbo…”,如果我像你提到的那样一开始就使用动态sql,这种方法在这种情况下有效吗?@BruceyBandit请为你的客户提供一个小样本situation@Devart我在我的问题中提供了一个样本作为参考update@Devart,才发现问题似乎不在于声明,而在于+@Database1+。如果我没有将其设置为变量,而只是将常用的数据库语句作为输出“+[Database1]+”.dbo…”放在ouput语句中,那么它也会给我一个错误。我想将数据库声明为变量,以便它可以与OUTPUT命令一起使用。你的答案可以修改以适应这个吗?