2012-03-19 6 views
0

하나의 서버에 2 db가 있습니다. @db 변수를 기반으로 선택하는 절차를 작성해야합니다.SQL 서버 케이스 데이터베이스에서 선택

  1. 내가 @SQL nvarchar(max)을 선언하고 일반 텍스트로 내 쿼리를 생성 :

    나는이 2 가능성을 알고있다. 그럼 난 exec @SQL. 나쁜 변형 imho.

  2. 비슷한 쿼리를 2 개 사용하고 @ db = ''첫 번째 쿼리 else 두 번째 쿼리를 사용합니다. 또 다른 나쁜 변형은 코드 중복이기 때문입니다.

질문은 - 이와 유사하게 수행 할 수있는 방법이 있습니까? select * from @ db.dbo.table?

+0

동의어를보고 싶지만 중간 배치를 만들 수 있는지 모르겠습니다. http://msdn.microsoft.com/en-us/library/ms177544.aspx –

+0

데이터베이스를 포함한 테이블 이름은 동적 SQL을 사용하지 않고 변수로 지정할 수 없습니다. 또 다른 대안은 사용자에게 값을 입력하도록 요청하고 사용자 입력을 기반으로 하드 코드 된 값으로 스크립트를 생성하는 것입니다. –

답변

0

"exec @SQL"을 사용하는 것은 나쁘지 않습니다. 그것이 일을 끝내고 어떤 안전 위험에 드러내지 않는 경우에 갈 것이다 제일 방법일지도 모른다. 또 다른 옵션은 C#과 같은 실제 프로그래밍 언어를 사용하는 것을 고려하는 것입니다. 이러한 프로그래밍 언어는 이러한 종류의 동적 요구 사항을 처리 할 수있는 기능이 잘 갖추어져 있기 때문입니다.

+0

나는 그것이 악하지는 않지만 시험하기는 어렵다는 것을 알고있다. – StNickolas