2012-06-20 2 views
1

내가상수 내 데이터베이스 작성 스크립트에서

ALTER DATABASE [database_name_value] SET... 

같은 많은 선이 종종 다른 이름을 가진 소수의 인스턴스를 만들 필요가 있기 때문에이 나는 종종 텍스트 편집기에서 데이터베이스 _를 교체해야이 오류가 발생하기 쉽습니다. database_name_constant와 같은 상수를 선언하고 데이터베이스 이름을 한 번 할당 한 다음 스크립트 전체에서 사용하여 좀 더 적절하게하고 싶습니다.

SQL Server 2008에서 가능합니까?

당신은 스크립트에서 변수를 만든 다음 SQLCMD 모드에서 스크립트를 실행할 수
+0

일부 미들웨어를 사용하여 DB 생성 및 업데이트를 처리하면 문제가 없습니다. – Lucero

+0

스크립트의 첫 줄에'use Database_Name'을 시도 했습니까? – Pankaj

+0

@Kanavi 아니요 데이터베이스가 첫 번째 줄에 존재하지 않기 때문에 삭제 된 다음 다시 작성되며 "ALTER DATABASE [dbname] SET ANSI_NULL_DEFAULT OFF"와 같은 명령어가 있으며이 줄에서 [dbname]을 제거 할 수 있는지 여부를 알지 못합니다 . – Trismegistos

답변

1

:setvar DatabaseName "MyDBName" 

ALTER DATABASE [$(DatabaseName)] 
+0

나는이 스크립트를 사용하는 사람은 아니지만 지금까지 모든 사용자가이 스크립트를 SQL Management Studio 스크립트 편집기에 붙여 넣을 수 있다는 것을 알고 있으므로 어떻게 든 대처해야합니다. 평소와 같이 수업을 만드는 것은 쓸모 없습니다. – Trismegistos

+2

솔직히 말해서,이 스크립트를 사용하는 사람들이 매개 변수의 변경을 처리 할 수 ​​없다면, 내 의견으로는 DB에 실제로 액세스해서는 안됩니다. – ChrisBint

+0

최상의 솔루션 인 것처럼 보이지만 상수 설정 등의 전제 조건없이 SQL Management Studio에서 스크립트를 실행할 수 있어야하므로 실현할 수 없습니다. – Trismegistos

1

당신이 데이터베이스에서 쿼리 에서 행동하는 경우 다음 사용 당신이 수정하고 싶다면 CURRENT가 당신이 찾고있는 옵션입니다.

ALTER DATABASE CURRENT SET ... 
+0

"ALTER DATABASE [이름] SET .."을 "USE [이름]; ALTER DATABASE CURRENT SET .."로 변경할 수 있도록 "[dbname] 사용"명령으로 작동합니까? 그렇다면 앞으로 나아갈 수는 있지만 충분하지는 않습니다. 이상적으로 @ChrisBint와 같은 것을 보여주고 싶지만 변수를 외부에서 설정하지 않아야합니다. – Trismegistos

+0

@Trismegistos - 그래, 그럴 것 같아요.하지만 SQL Server 2012에서만 유효하다는 것을 깨달았습니다. 순수한 T-SQL에는 SQL Server가 데이터베이스 이름을 원하고 * 이름 *이 필요하고 * 문자열 *이 아닌 대부분의 장소가 있습니다. –

관련 문제