2016-06-23 2 views
1

invoke-sqlcmd를 사용하여 하나의 원격 서버에 대해서만 tsql 쿼리를 실행할 PowerShell 스크립트를 작성하려고합니다.Invoke-sqlcmd to remote server 문제 : 파일을 찾을 수 없습니다.

# 5 # Create clientdb database on secondary server by restoring the full backup for primary 
    Try { 
     Invoke-sqlcmd -ServerInstance 'REMOTESQLSRV'` 
     -Username 'ts_sql' -Password 'somepassword'` 
     -InputFile "$LScltid\__01_On_Secondary_CreateDB2_srv2.sql"` 
     -ErrorAction Stop 

     Write-Host " clt_$id is now restored to secondary server "` 
     -ForegroundColor White -BackgroundColor Green 
} Catch { 
    Write-Host " Restore operation for clt_$id did not succeed. Check the error logs " -ForegroundColor Black -BackgroundColor Red 
} 

내 스크립트는 항상 여기에 휴식 : 그 TSQL 쿼리는 아래에의 추출물 등 사용자를 생성, 을 데이터베이스를 백업/복원 같은 간단한 하나입니다. 내 머리를 감당할 수없는 몇 가지 이유 때문에 invoke-sqlcmd는 "$ LScltid"변수를 사용하여 .sql 스크립트를 찾을 경로를 확인하지 않습니다.

매번 실행할 때마다 현재 디렉터리가 SQLERVER : \ provider 또는이 단계에서 스크립트 실패 원인이되는 다른 디렉터리로 변경됩니다.

나는 이것을 올바르게하고 있습니까? 그렇다면 예상대로 명령을 수행해야합니다.

UPDATE 내가 변수로 스크립트가 하드 코딩 내가 (장치에서 데이터베이스를 복원이 경우에는) 내가 필요로하는 결과를 얻을 수 있어요 값 실행하는 경우, 언급하는 것을 잊었다.

의견에 감사드립니다.

+0

표준 디버깅 방법은 사용하는 것입니다

감사합니다'쓰기 -host' 명령을 사용하여 콘솔에 명령을 출력 한 다음 결과를 Powershell 프롬프트에 복사하여 붙여 넣고 명령에 유효한 구문이 있는지 확인합니다. 명령을 그대로 사용하려면 복사 붙여 넣기를 사용하십시오. 공백, 구두점 및 띄어쓰기에 대한 오류 – vonPryz

+0

안녕하세요 vonPryz. 디버깅 제안 주셔서 감사합니다. 항상 Windows Powershell ISE를 사용하여 쓰기/디버그/수정하는 스크립트를 사용합니다. 있네. – Tecina

답변

0

이상한 일은 명령이 작동 중입니다. 나는 이전에 잘못한 것을 정말로 모르지만 똑같은 명령이 현재 작동 중이다. 같은 문제에 직면 사람들을 위해 그냥 머리까지 :

당신이 Invoque-Sqlcmd 후 오는 명령이 설정 한 (얻을 단골이, 새 복사본 특히 경우 공급자의 변화에주의, 스크립트에서 Invoke-Sqlcmd를 사용하는 경우, etc ....) 내 경우에는 어딘가에 두 Invoke-sqlcmd 명령 사이의 스크립트에서 로컬 서버에서 원격 서버로 파일을 복사해야했습니다. 공급자가 변경되어 명령이 실패 할 때마다 그 힘든 재 - 명령 경우 copy-item 명령을 실행하고 기동이 트릭을 할 것 같았다 I set-location 전에 해결 (알 수 없습니다. 유래 팀

관련 문제