TSQL 프로그램을 호출하는 데 사용할 DOS 배치 파일이 있습니다. 사용할 데이터베이스의 이름을 전달하고 싶습니다. 이것은 작동하는 것 같습니다. 작업하고자하는 테이블의 이름에 대해 PREFIXES를 전달하고 싶습니다. 테스트 테이블의 경우 테스트 테이블을 사용하기 위해 접두사의 이름을 전달하려고합니다.환경 변수를 통해 null 문자열 값을 TSQL 스크립트에 전달
set svr=myserver
rem set db=myTESTdatabasename
set db=mydatabasename
rem set tp=TEST
set tp=
sqlcmd -S %svr% -d somename -i test01.sql
test01.sql은 다음과 같습니다
use $(db)
go
select top 10 * into $(db).dbo.$(tp)dsttbl from $(db).dbo.$(tp)srctbl
그것은 테스트 물건 잘 작동하지만 실제 물건, 난 그냥 그렇게 것이 널 (null)로 TP의 값을 설정하려면 가짜 테이블 이름이 아닌 실제 테이블 이름을 사용하십시오.
내가 이것을하는 이유는 실제 데이터베이스에서 사용될 모든 이름을 모르기 때문입니다. 나는 매우 큰 SQL 프로그램 (실제 SQL 프로그램은 수 백 줄)이 될 것에 대해 많은 검색을 대신 할 필요가 없도록 일반화하려고하고있다. 테스트 케이스에서
, 이것은 생산 실행을 위해select top 10 * into myTESTdatabasename.dbo.TESTdsttbl from myTESTdatabasename.dbo.TESTsrctbl
에 해결하는 것, 그것은
select top 10 * into mydatabasename.dbo.dsttbl from mydatabasename.dbo.srctbl
문제를 해결해야한다는 ($에 대한 null 값을 좋아하지 않는 것 같다 tp), 또는 아마도 그것은 정의되지 않은 변수를 얻고있다.
알 테이블 '이란 뜻이야? dbo 스키마를 의미합니까? 어떤 경우에는 tp = dbo로 설정하십시오. 또한 [스크립트 변수와 함께 sqlcmd 사용] (http://msdn.microsoft.com/en-us/library/ms188714.aspx) :/V 명령 줄 옵션이 작동합니까? –
좋은 질문입니다. 그걸 정리하기 위해 편집하겠습니다. – elbillaf
아마도 이것이 분명합니다. – elbillaf