2013-01-11 2 views
9

現在のデータベース(ALTER DATABASE...)で更新スクリプトを実行する必要がありますが、暗黙の名前は使用できません。いくつかの関数を使用して現在のdb名を取得し、ALTER DATABASE(Sql Server 2005以上)の内部で使用することは可能ですか?私はdb_name()を使ってみましたが、うまくいきません。名前を使用しない現在のデータベースALTER

select db_name();

ALTER DATABASE db_name() ...あなたは

declare @dbname varchar(100) 
set @dbname=quotename(db_name()) 
exec('alter database '[email protected]+' ...'); 

か...のようなものを使用する必要が

答えて

15

がさらに簡単に動作しません

set @sql='alter database '+quotename(db_name())+' ...'; 
exec(@sql) 
+0

をこれはまだDB_NAMEでエラー() – Raj

+0

私はそれがあると思います同じデータベース上の操作のために、ここにあなたにとって有用なものがあります http://blog.sqlauthority.com/2010/02/11/sql-server-alter-database-dbname-set-single_user-with-rollback-即時/ – brykneval

+0

@Raj - 初めて入力したときに、式の関数db_name()が必要ですが、最初にvarcharにキャストする必要があります。私はこれを反映するためにこれを編集します。 –

0

この

を試してみて動作します
DECLARE @DBName sysname; 
SET @DBName = (SELECT db_name()); 
DECLARE @SQL varchar(1000); 
SET @SQL = 'ALTER DATABASE '[email protected]+' .......' 

ラジ

29

実際にはより多くのこのようなものは、おそらくあなたは、現在のデータベース変更している場合は少し良いです:

ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL = 90

+4

これはきちんとした答えですが、これはSQL Server 2012以降でのみ有効です。元の質問にはSQL Server 2005のタグが付けられています。 http://stackoverflow.com/questions/19238834/alter-database-current-exception –

+2

@AdrianEdwards、trueですが、グーグルでは初めてのヒットです。 'sql serverデータベースを現在のデータベースに変更する。 :) –