2016-11-15 9 views
0

Server1에 "test.sql"이 있는데이 스크립트를 server2와 server3에서 실행하고 싶습니다. 나는 아래의 코드 활용 :한 서버에서 다른 서버로 원격 실행

$InstanceNm = "server2\inst2,1433" 

$CommandExecute_SP = "D:\testscript\test.sql" --located in Server1 

invoke-expression "SQLCMD -E -S $InstanceNm -d 'master' -i $CommandExecute_SP -b" 

내가 서버 1에서 모든 코드를 실행하고 나는 서버 2 대상을, 그러나 나는이 오류가 무엇입니까 : 내가 -? 를 입력 할 때 다음

SQLCMD : Sqlcmd: 'server2\inst2,1433': Unexpected argument. Enter '-?' for help. 

을 그것은이 있습니다 :

At line:1 char:2 
+ -? 
+ ~ 
Missing expression after unary operator '-'. 
At line:1 char:2 
+ -? 
+ ~ 
Unexpected token '?' in expression or statement. 
    + CategoryInfo   : ParserError: (:) [], ParentContainsErrorRecordException 
    + FullyQualifiedErrorId : MissingExpressionAfterOperator 

다른 서버에서 개체를 생성하는 .sql 파일을 실행하는 것이 올바른 방법인지 궁금합니다. System.Data.SQLClient.SQLConnection을 사용하여 짧은 sql 문을 실행하는 방법을 알고 있지만이 .sql 파일에는 1000 줄 이상의 코드가 있기 때문에 피하고 싶습니다.

+0

test.sql 파일도 server2에 복사해야합니까? – nciacrklo

+0

''$ InstanceNm "' –

답변

0

원격 세션을 만들고 Invoke-Command -cmdlet을 통해 명령을 실행할 수 있습니다.

$sessions = New-PSSession -computername server1, server2, server3 
invoke-command -session $sessions -scriptblock { 
    invoke-expression "SQLCMD -E -S $InstanceNm -d 'master' -i $CommandExecute_SP -b" 
} 

Win2012 R2 이상인 경우 PS-remoting이 기본적으로 활성화됩니다. 그렇지 않으면 remoting을 살펴보십시오. 내가 다시로 myscripf를 통해 실행하고 오류가 '마스터'는에서 '문자에 의한, 내가 이것을 생략하고 지금 노력하고 있습니다 것을 발견