2012-06-20 86 views
1

在我的数据库创建脚本我有很多线,如常量数据库名称在SQL Server

ALTER DATABASE [database_name_value] SET... 

,因为经常需要创建一个不同的名称少数情况下我不得不经常更换的文本编辑器数据库名称和该是容易出错的我想通过声明一些像database_name_constant这样的常量并将数据库名称分配给它一次,然后在脚本中使用它来更正确地做到这一点。

在SQL Server 2008中可以吗?

+0

使用一些中间件来处理你的数据库创建和更新,你会没事的。 – Lucero

+0

您是否在脚本的第一行尝试使用'Database_Name'? – Pankaj

+0

@Kanavi没有,因为数据库不存在在第一行它被删除,然后重新创建,还有像“ALTER DATABASE [dbname] SET ANSI_NULL_DEFAULT OFF”的指令,我不知道我是否可以从此行剥离[dbname] 。 – Trismegistos

回答

1

您可以在脚本中创建一个变量,然后在SQLCMD模式下运行该脚本

:setvar DatabaseName "MyDBName" 

,然后使用

ALTER DATABASE [$(DatabaseName)] 
+0

我不仅是一个使用这个脚本的人,而且据我所知,所有用户都将此脚本复制并粘贴到SQL Management Studio脚本编辑器中,因此我必须以某种方式应对。像往常一样创建教学是徒劳的。 – Trismegistos

+2

说实话,如果那些使用这个脚本的人在这样做之前不能处理参数的改变,他们根本不应该真的有权访问数据库。 – ChrisBint

+0

它看起来像最好的解决方案,但它不可行,因为我必须能够从SQL Management Studio运行脚本,而不需要像设置常量等任何先决条件。 – Trismegistos

1

如果你内从数据库中查询作用你想修改,CURRENT是你正在寻找的选项。

ALTER DATABASE CURRENT SET ... 
+0

它可以使用“use [dbname]”命令,因此我可以将“ALTER DATABASE [Name] SET ..”更改为“USE [Name]; ALTER DATABASE CURRENT SET ..”?如果是,那会有一些进展,但这还不够。理想情况下,我希望显示@ChrisBint之类的内容,但不需要从外部设置变量。 – Trismegistos

+0

@Trismegistos - 它会这样工作,是的,但我意识到它只适用于SQL Server 2012,而不是2008,就像你的问题一样。纯T-SQL中没有任何其他选项 - 大多数SQL Server需要数据库名称的地方,它需要* name *而不是* string *。 –

相关问题