Programing

스크립트를 실행할 수 없음 : 프로그램 실행을 계속하기에 메모리가 부족합니다.

lottogame 2020. 11. 1. 17:12
반응형

스크립트를 실행할 수 없음 : 프로그램 실행을 계속하기에 메모리가 부족합니다.


내 로컬 PC에서 실행해야하는 123MB SQL 파일이 있습니다. 하지만 나는

Cannot execute script: Insufficient memory to continue the execution of the program

여기에 이미지 설명 입력

이 문제를 해결하는 방법?


메모리가 훨씬 적은 명령 줄 도구 SQLCMD를 사용합니다. 다음과 같이 간단합니다.

SQLCMD -d <database-name> -i filename.sql

SQL Server 인스턴스에 액세스하거나 데이터베이스에 액세스하려면 유효한 자격 증명이 필요합니다.

여기 에서 가져 왔습니다 .


도움이 될 것입니다! 아래 단계를 참조하십시오.

sqlcmd -S 서버 이름 -d 데이터베이스 이름 -i script.sql

  • cmd.exe를 관리자 권한으로 엽니 다.
  • 문서 디렉토리를 만듭니다.
  • 문서 폴더에 SQL 스크립트 파일 (script.sql)을 넣습니다.
  • 위에서 강조 표시된 쿼리 또는 명령 줄 화면 아래와 같이 sqlcmd, 서버 이름, 데이터베이스 이름 및 스크립트 파일 이름으로 쿼리를 입력합니다.

여기에 이미지 설명 입력


서버 속성에서 쿼리 당 최소 메모리 값을 간단히 늘릴 수도 있습니다. 이 설정을 편집하려면 서버 이름을 마우스 오른쪽 버튼으로 클릭하고 속성> 메모리 탭을 선택합니다.

SSMS 2012에서 30MB SQL 스크립트를 실행하려고하면이 오류가 발생했습니다. 값을 1024MB에서 2048MB로 늘린 후 스크립트를 실행할 수있었습니다.

(이것은 내가 여기에 제공 한 것과 동일한 답변입니다 )


문제를 올바르게 이해하면 (Transact sql) xyz.sql-데이터베이스 + 스키마를 복원하려고합니다. 나를 위해 일한 다음 명령을 시도해 볼 수 있습니다.

SQLCMD -U sa -i xyz.sql

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의 파일 경로


때때로 스크립트와 데이터의 크기가 너무 커서 이러한 유형의 오류가 발생합니다. 서버는 실행하고 결과를 제공하기 위해 충분한 메모리가 필요합니다. 쿼리 당 메모리 크기를 간단히 늘릴 수 있습니다.

SQL 서버 속성> 메모리 탭 (왼쪽)> 이제 추가 할 최대 메모리 제한을 설정하기 만하면됩니다.

또한 상단에는 "Results to text"옵션이 있는데, "Results to grid"옵션에 비해 메모리를 덜 소비합니다. 또한 Results to Text로 이동하여 메모리 실행을 줄일 수도 있습니다.


sqlcmd -S mamxxxxxmu \ sqlserverr -U sa -P x1123 -d QLDB -i D : \ qldbscript.sql

  • 관리자 권한으로 실행에서 명령 프롬프트 열기

  • 위의 명령을 입력

"mamxxxxxmu"는 컴퓨터 이름 "sqlserverr"는 서버 이름 "sa"는 서버 "x1123"의 사용자 이름입니다. "QLDB"는 데이터베이스 이름입니다. "D : \ qldbscript.sql"은 데이터베이스에서 실행할 SQL 스크립트 파일입니다.


이 단계를 시도하십시오.

1) PowerShell 열기

2) 다음 명령을 작성하십시오.

sqlcmd -S PCNAME\SQLEXPRESS -U user -P password -d databanse_name -i C:\script.sql

3) Return을 누릅니다.

:-)

여기에 이미지 설명 입력


개발 중에 LocalDB에 연결해야하는 경우 다음을 사용할 수 있습니다.

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql

아래 스크립트는 완벽하게 작동합니다.

sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql -x

조짐:

sqlcmd 유틸리티를 사용하여 복구 스크립트를 실행할 때 'Sqlcmd : 오류 :'file_name.sql '파일의'X '명령 근처 XYZ 줄에 구문 오류가 있습니다.' 오류가 발생했습니다.

원인:

This is a sqlcmd utility limitation. If the SQL script contains dollar sign ($) in any form, the utility is unable to properly execute the script, since it is substituting all variables automatically by default.

Resolution:

In order to execute script that has a dollar ($) sign in any form, it is necessary to add “-x” parameter to the command line.

e.g.

Original: sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql

Fixed: sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql -x


My database was larger than 500mb, I then used the following

C:\Windows>sqlcmd -S SERVERNAME -U USERNAME -P PASSWORD -d DATABASE -i C:\FILE.sql

It loaded everything including SP's

*NB: Run the cmd as Administrator

참고URL : https://stackoverflow.com/questions/17918770/cannot-execute-script-insufficient-memory-to-continue-the-execution-of-the-prog

반응형