source

'Invoke-Sqlcmd'이(가) cmdlet의 이름으로 인식되지 않습니다.

ittop 2023. 8. 26. 00:03
반응형

'Invoke-Sqlcmd'이(가) cmdlet의 이름으로 인식되지 않습니다.

우리는 최근에 SQL Server 2012 SP3를 사용하기 시작했고 PowerShell 스크립트를 사용하여 SQL Server 2012를 구축했습니다. 자동화 프로세스에서 db에서 여러 데이터베이스 스크립트를 실행해야 하는 요구 사항이 있으며, 이를 통해Invoke-Sqlcmd이 문제를 찾을 때까지 매우 신뢰할 수 있습니다.

실행할 때Invoke-sqlcmd최근 SQL 서버가 설치된 시스템에서 PowerShell의 디버그 모드에 있는 적절한 매개 변수 세트를 사용하면 문제가 없습니다.

Powershell 명령 : Invoke-Sqlcmd - 입력 파일 $sStrJBSecRolePath - 서버 인스턴스 $sStrSQLName - 오류 작업 중지

그러나 동일한 서버를 재구성한 후 PowerShell 자동화 스크립트를 통해 동일한 쿼리를 실행하면 다음 오류가 발생합니다.

'Invoke-Sqlcmd'라는 용어는 cmdlet, 함수, 스크립트 파일 또는 작동 가능한 프로그램의 이름으로 인식되지 않습니다.이름의 철자를 확인하거나 경로가 포함된 경우 경로가 올바른지 확인한 후 다시 시도하십시오.

나는 온라인에서 SQLPS 가져오기 등을 제안하는 많은 사람들을 조사했고, 그래서 테스트를 위해 아래 명령어를 스크립트에 추가했습니다.

get-pssnapin -Registered
Import-Module “sqlps” -DisableNameChecking**

위 내용을 스크립트에 추가한 후에도 동일한 오류가 발생합니다.그러나 동일한 스크립트를 수동으로 실행하면 완벽하게 실행됩니다.저는 무엇이 잘못되었는지 이해할 수 없습니다.

PowerShell 자동화 스크립트 - 이 스크립트는 를 설치합니다.NetFramework 3.5, SQL 서버 2012, SQL 서버 2012 SP3를 로드한 다음 SQL의 최대 메모리 제한과 같은 SQL 설정을 변경하는 데 사용하는 SMO 어셈블리를 로드합니다.

관리자로 PowerShell을 열고 설치합니다.sqlserver모듈 방식Install-Module sqlserver

모듈이 설치된 후 모듈은 다음과 같은 명령을 수행합니다.Invoke-sqlcmd즉시 사용할 수 있어야 합니다.

다음을 사용하여 동일한 내용을 확인할 수 있습니다.Get-Command -Module sqlserver.

이 모듈을 쉽게 사용할 수 없는 경우에는 다음을 수행할 수 있습니다.Import-Module sqlserver설치 후.

이것은 완벽한 해결책이 아니라 저에게 효과적인 해결책일 뿐입니다.

자동화에서 쿼리를 실행하면 실행 중인 사용자가 sqlcmd에 액세스할 수 없습니다.sqlcmd가 있는 디렉터리에 대해 명령을 실행합니다.exe가 있습니다.

그냥 넣어주세요

CD "C:\Program Files (x86)\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn".

sqlcmd 위치를 가져오려면 검색 상자에서 SQLCMD.exe 위치를 검색합니다.

찾을 수 없으면 없는 곳에 설치해야 하지만, 당신의 경우에는 그것이 있다고 생각합니다. 위치를 정확히 파악하기만 하면 됩니다.

또한 자동화 스크립트를 실행하는 사용자에 대한 경로 변수를 설정해야 합니다. 그렇지 않으면 sqlcmd만 인식하고 실행하지 않습니다.

$env:Path   += ";C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn\"

인 로컬 로부터 이경로작중사가수있져습다니올터부로용자컬로인업으로 가져올 수 .$Env:Path

언급URL : https://stackoverflow.com/questions/37825030/invoke-sqlcmd-is-not-recognized-as-the-name-of-a-cmdlet

반응형