Không thể thực thi tập lệnh: Không đủ bộ nhớ để tiếp tục thực hiện chương trình


85

Tôi có một tệp sql 123MB mà tôi cần thực thi trong PC cục bộ của mình. Nhưng tôi đang nhận được

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

nhập mô tả hình ảnh ở đây

Giải quyết vấn đề này như thế nào?


@marc_s Khi tôi bấm Ctlr + E nó ngay lập tức cho thấy lỗi này
user960567

Câu trả lời:


123

sử dụng công cụ dòng lệnh SQLCMD gọn gàng hơn nhiều về bộ nhớ. Nó đơn giản như:

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

Bạn cần thông tin xác thực hợp lệ để truy cập phiên bản SQL Server của mình hoặc thậm chí để truy cập cơ sở dữ liệu

Lấy từ đây .


23
Với thông tin đăng nhập đầy đủ, chỉ định db và máy chủ: sqlcmd -S <YOUR-SERVER> -U <YOUR-USER> -P <YOUR-PASSWORD> -d <YOUR-DATABASE> -i <YOUR-SQL-FILE-PATH.sql >
a4bike

1
Tôi gặp sự cố này: "Số biểu thức giá trị hàng trong câu lệnh INSERT vượt quá số lượng tối đa cho phép là 1000 giá trị hàng."
Christian Fredh

3
thêm -echo kết nối đáng tin cậy
smurtagh

33

Nó có thể giúp bạn! Vui lòng xem các bước dưới đây.

sqlcmd -S server-name -d database-name -i script.sql

  • Mở cmd.exe với tư cách Quản trị viên.
  • Tạo thư mục Documents.
  • Đặt tệp SQL Script (script.sql) của bạn vào thư mục tài liệu.
  • Nhập truy vấn với sqlcmd, server-name, database-name và script-file-name như truy vấn được đánh dấu ở trên hoặc bên dưới màn hình dòng lệnh.

nhập mô tả hình ảnh ở đây


Bạn có thể AAD các -sa tên truy cập và mật khẩu -123, sqlcmd -S viaserver -U sa -P 123 -d TelstraDeployed -i SQLQuery1.sql
Anil Singh

11

Bạn cũng có thể chỉ cần tăng Bộ nhớ tối thiểu cho mỗi giá trị truy vấn trong thuộc tính máy chủ. Để chỉnh sửa cài đặt này, nhấp chuột phải vào tên máy chủ và chọn tab Thuộc tính> Bộ nhớ.

Tôi đã gặp phải lỗi này khi cố gắng thực thi tập lệnh SQL 30MB trong SSMS 2012. Sau khi tăng giá trị từ 1024MB lên 2048MB, tôi đã có thể chạy tập lệnh.

(Đây cũng là câu trả lời mà tôi đã cung cấp ở đây )


9

Đối với Xác thực Windows, hãy sử dụng cmd sql này

SQLCMD -S TestSQLServer\SQLEXPRESS  -d AdventureWorks2018 -i "d:\document\sql document\script.sql"

Lưu ý: Nếu có bất kỳ khoảng trống nào trong đường dẫn tệp sql thì hãy sử dụng "(Dấu ngoặc kép)"

Để xác thực máy chủ SQL, hãy sử dụng cmd sql này

SQLCMD -S TestSQLServer\SQLEXPRESS -U sa -P sasa  -d AdventureWorks2018 -i "d:\document\sql document\script.sql"

-S TestSQLServer \ SQLEXPRESS: Tại đây chỉ định Tên máy chủ SQL

-U sa: Tên người dùng (trong trường hợp Xác thực Máy chủ SQL)

-P sasa: Mật khẩu (trong trường hợp Xác thực Máy chủ SQL)

-d AdventureWorks2018: Tên cơ sở dữ liệu đến đây

-i "d: \ document \ sql document \ script.sql": Đường dẫn tệp của SQLFile


5

Nếu tôi hiểu chính xác vấn đề của bạn, bạn đang cố khôi phục (giao dịch sql) xyz.sql - cơ sở dữ liệu + lược đồ. Bạn có thể thử lệnh này phù hợp với tôi:

SQLCMD -U sa -i xyz.sql

4

Cơ sở dữ liệu của tôi lớn hơn 500mb, sau đó tôi đã sử dụng

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

Nó tải mọi thứ bao gồm cả SP

* NB: Chạy cmd với tư cách Quản trị viên


2

Đôi khi, do kích thước lớn của tập lệnh và dữ liệu, chúng tôi gặp phải loại lỗi này. Server cần đủ bộ nhớ để thực thi và đưa ra kết quả. Chúng tôi chỉ có thể tăng kích thước bộ nhớ cho mỗi truy vấn.

Bạn chỉ cần vào thuộc tính máy chủ sql> Tab bộ nhớ (bên trái)> Bây giờ đặt giới hạn bộ nhớ tối đa mà bạn muốn thêm.

Ngoài ra, có một tùy chọn ở trên cùng, "Kết quả thành văn bản", tiêu thụ ít bộ nhớ hơn so với tùy chọn "Kết quả thành lưới", chúng ta cũng có thể chuyển Kết quả thành Văn bản để thực thi ít bộ nhớ hơn.


2

Tập lệnh dưới đây hoạt động hoàn hảo:

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

Các triệu chứng:

Khi thực thi tập lệnh khôi phục với tiện ích sqlcmd, lỗi 'Sqlcmd: Error: Lỗi cú pháp tại dòng XYZ gần lệnh' X 'trong tệp' file_name.sql '.' gặp phải lỗi.

Nguyên nhân:

Đây là một giới hạn tiện ích sqlcmd. Nếu tập lệnh SQL chứa ký hiệu đô la ($) dưới bất kỳ hình thức nào, tiện ích không thể thực thi đúng tập lệnh, vì nó đang tự động thay thế tất cả các biến theo mặc định.

Độ phân giải:

Để thực thi tập lệnh có ký hiệu đô la ($) ở bất kỳ dạng nào, cần phải thêm tham số “-x” vào dòng lệnh.

ví dụ

Bản gốc: sqlcmd -s Server_name -d Database_name -E -ic: \ Temp \ Recovery_script.sql

Đã sửa lỗi: sqlcmd -s Server_name -d Database_name -E -ic: \ Temp \ Recovery_script.sql -x


$ bình luận rất hữu ích. Cảm ơn
Pale Ale

1

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

  • Mở dấu nhắc lệnh đang chạy với tư cách quản trị viên

  • nhập lệnh trên

"mamxxxxxmu" là tên máy tính "sqlserverr" là tên máy chủ "sa" là tên người dùng của máy chủ "x1123" là mật khẩu của máy chủ "QLDB" là tên cơ sở dữ liệu "D: \ qldbscript.sql" là tệp script sql để thực thi trong cơ sở dữ liệu


1

Hãy thử bước này,

1) Mở PowerShell

2) Viết lệnh này:

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

3) Nhấn Return

:-)

nhập mô tả hình ảnh ở đây


1

Nếu bạn cần kết nối với LocalDB trong quá trình phát triển, bạn có thể sử dụng:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.