내 로컬 PC에서 실행해야하는 123MB SQL 파일이 있습니다. 하지만 나는
Cannot execute script: Insufficient memory to continue the execution of the program
이 문제를 해결하는 방법?
내 로컬 PC에서 실행해야하는 123MB SQL 파일이 있습니다. 하지만 나는
Cannot execute script: Insufficient memory to continue the execution of the program
이 문제를 해결하는 방법?
답변:
-e
신뢰할 수있는 연결을 위해 추가
서버 속성에서 쿼리 당 최소 메모리 값을 간단히 늘릴 수도 있습니다. 이 설정을 편집하려면 서버 이름을 마우스 오른쪽 버튼으로 클릭하고 속성> 메모리 탭을 선택합니다.
SSMS 2012에서 30MB SQL 스크립트를 실행하려고하면이 오류가 발생했습니다. 값을 1024MB에서 2048MB로 늘린 후 스크립트를 실행할 수있었습니다.
(이것은 여기에서 제공 한 것과 동일한 답변입니다. )
Windows 인증의 경우이 SQL cmd를 사용하십시오.
SQLCMD -S TestSQLServer\SQLEXPRESS -d AdventureWorks2018 -i "d:\document\sql document\script.sql"
노트 : SQL 파일 경로에 공백이 있으면 "(인용 부호)"를 사용하십시오.
SQL Server 인증의 경우이 SQL cmd를 사용하십시오.
SQLCMD -S TestSQLServer\SQLEXPRESS -U sa -P sasa -d AdventureWorks2018 -i "d:\document\sql document\script.sql"
-S TestSQLServer \ SQLEXPRESS : 여기에 SQL Server 이름 지정
-U sa : 사용자 이름 (SQL Server 인증의 경우)
-P sasa : 암호 (SQL Server 인증의 경우)
-d AdventureWorks2018 : 데이터베이스 이름이 여기에 표시됩니다.
-i "d : \ document \ sql document \ script.sql": SQLFile의 파일 경로
문제를 올바르게 이해하면 (Transact sql) xyz.sql-데이터베이스 + 스키마를 복원하려고합니다. 나를 위해 일한 다음 명령을 시도해 볼 수 있습니다.
SQLCMD -U sa -i xyz.sql
내 데이터베이스가 500MB보다 컸고 다음을 사용했습니다.
C:\Windows>sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -d DATABASE -i C:\FILE.sql
SP를 포함한 모든 것을로드했습니다.
*주의 : cmd를 관리자 권한으로 실행하십시오.
때때로 스크립트와 데이터의 크기가 너무 커서 이러한 유형의 오류가 발생합니다. 서버는 실행하고 결과를 제공하기 위해 충분한 메모리가 필요합니다. 쿼리 당 메모리 크기를 간단히 늘릴 수 있습니다.
SQL 서버 속성> 메모리 탭 (왼쪽)> 이제 추가 할 최대 메모리 제한을 설정하기 만하면됩니다.
또한 상단에는 "Results to text"옵션이 있는데, "Results to grid"옵션에 비해 메모리를 덜 사용합니다. 또한 Results to Text로 이동하여 메모리 실행을 줄일 수도 있습니다.
아래 스크립트는 완벽하게 작동합니다.
sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql -x
조짐:
sqlcmd 유틸리티를 사용하여 복구 스크립트를 실행할 때 'Sqlcmd : 오류 :'file_name.sql '파일의'X '명령 근처에있는 XYZ 줄에 구문 오류가 있습니다.' 오류가 발생했습니다.
원인:
이것은 sqlcmd 유틸리티 제한 사항입니다. SQL 스크립트에 어떤 형태로든 달러 기호 ($)가 포함 된 경우 유틸리티는 기본적으로 모든 변수를 자동으로 대체하므로 스크립트를 제대로 실행할 수 없습니다.
해결:
어떤 형태로든 달러 ($) 기호가있는 스크립트를 실행하려면 명령 줄에 "-x"매개 변수를 추가해야합니다.
예 :
원본 : sqlcmd -s Server_name -d Database_name -E -ic : \ Temp \ Recovery_script.sql
수정 됨 : sqlcmd -s Server_name -d Database_name -E -ic : \ Temp \ Recovery_script.sql -x