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


답변:


123

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

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

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

여기 에서 가져 왔습니다 .


23
전체 자격 증명으로 db 및 서버 지정 : sqlcmd -S <YOUR-SERVER> -U <YOUR-USER> -P <YOUR-PASSWORD> -d <YOUR-DATABASE> -i <YOUR-SQL-FILE-PATH.sql >
a4bike

1
이 문제가 발생합니다. "INSERT 문의 행 값 식 수가 허용되는 최대 행 값 수를 초과합니다."
Christian Fredh

3
-e신뢰할 수있는 연결을 위해 추가
smurtagh

33

도움이 될 수 있습니다! 아래 단계를 참조하십시오.

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

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

여기에 이미지 설명 입력


당신은 SQLCMD -S viaserver -U 사 -P (123) -d TelstraDeployed -i SQLQuery1.sql 사용자 이름 -sa과 암호 -123을 AAD 수
아닐 싱

11

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

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

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


9

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


5

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

SQLCMD -U sa -i xyz.sql

4

내 데이터베이스가 500MB보다 컸고 다음을 사용했습니다.

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

SP를 포함한 모든 것을로드했습니다.

*주의 : cmd를 관리자 권한으로 실행하십시오.


2

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

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

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


2

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

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


$ 코멘트는 매우 도움이되었습니다. 감사합니다
Pale Ale

1

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

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

  • 위의 명령을 입력

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


1

이 단계를 시도하십시오.

1) PowerShell 열기

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

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

3) Return을 누릅니다.

:-)

여기에 이미지 설명 입력


1

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

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.