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
Giải quyết vấn đề này như thế nào?
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
Giải quyết vấn đề này như thế nào?
Câu trả lời:
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 .
-e
cho kết nối đáng tin cậy
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
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 )
Đố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
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
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
Đô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.
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
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