ฉันมีไฟล์ sql ขนาด 123MB ซึ่งฉันต้องใช้งานในเครื่องพีซีของฉัน แต่ฉันกำลังได้รับ
Cannot execute script: Insufficient memory to continue the execution of the program
วิธีแก้ปัญหานี้?
ฉันมีไฟล์ sql ขนาด 123MB ซึ่งฉันต้องใช้งานในเครื่องพีซีของฉัน แต่ฉันกำลังได้รับ
Cannot execute script: Insufficient memory to continue the execution of the program
วิธีแก้ปัญหานี้?
คำตอบ:
ใช้เครื่องมือบรรทัดคำสั่ง SQLCMD ซึ่งใช้หน่วยความจำน้อยกว่ามาก มันง่ายเหมือน:
SQLCMD -d <database-name> -i filename.sql
คุณต้องมีข้อมูลประจำตัวที่ถูกต้องเพื่อเข้าถึงอินสแตนซ์ SQL Server ของคุณหรือแม้กระทั่งเพื่อเข้าถึงฐานข้อมูล
นำมาจากที่นี่ .
-e
สำหรับการเชื่อมต่อที่เชื่อถือได้
มันอาจช่วยคุณได้! โปรดดูขั้นตอนด้านล่าง
sqlcmd -S ชื่อเซิร์ฟเวอร์ -d ฐานข้อมูลชื่อ -i script.sql
คุณยังสามารถเพิ่มหน่วยความจำขั้นต่ำต่อค่าแบบสอบถามในคุณสมบัติของเซิร์ฟเวอร์ได้ หากต้องการแก้ไขการตั้งค่านี้ให้คลิกขวาที่ชื่อเซิร์ฟเวอร์และเลือกคุณสมบัติ> แท็บหน่วยความจำ
ฉันพบข้อผิดพลาดนี้ขณะพยายามเรียกใช้สคริปต์ 30MB SQL ใน SSMS 2012 หลังจากเพิ่มค่าจาก 1024MB เป็น 2048MB ฉันสามารถเรียกใช้สคริปต์ได้
(นี่คือคำตอบเดียวกับที่ฉันให้ไว้ที่นี่ )
สำหรับ Windows Authentication ให้ใช้ sql cmd นี้
SQLCMD -S TestSQLServer\SQLEXPRESS -d AdventureWorks2018 -i "d:\document\sql document\script.sql"
หมายเหตุ:หากมีที่ว่างในเส้นทางไฟล์ sql ให้ใช้ "(เครื่องหมายคำพูด)"
สำหรับ SQL Server Authentication ให้ใช้ sql cmd นี้
SQLCMD -S TestSQLServer\SQLEXPRESS -U sa -P sasa -d AdventureWorks2018 -i "d:\document\sql document\script.sql"
-S TestSQLServer \ SQLEXPRESS: ที่นี่ระบุชื่อเซิร์ฟเวอร์ SQL
-U sa:ชื่อผู้ใช้ (ในกรณีของการตรวจสอบสิทธิ์เซิร์ฟเวอร์ SQL)
-P sasa:รหัสผ่าน (ในกรณีของการตรวจสอบสิทธิ์เซิร์ฟเวอร์ SQL)
-d AdventureWorks2018:ชื่อฐานข้อมูลมาที่นี่
-i "d: \ document \ sql document \ script.sql":เส้นทางไฟล์ของ SQLFile
ถ้าฉันเข้าใจปัญหาของคุณอย่างถูกต้องคุณกำลังพยายามกู้คืน (ทรานแซค sql) xyz.sql - database + schema คุณสามารถลองใช้คำสั่งนี้ซึ่งเหมาะกับฉัน:
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> แท็บหน่วยความจำ (ด้านซ้าย)> ตั้งค่าขีด จำกัด หน่วยความจำสูงสุดที่คุณต้องการเพิ่ม
นอกจากนี้ยังมีตัวเลือกที่ด้านบนคือ "ผลลัพธ์เป็นข้อความ" ซึ่งใช้หน่วยความจำน้อยกว่าเมื่อเปรียบเทียบกับตัวเลือก "ผลลัพธ์เป็นตาราง" เรายังสามารถไปที่ผลลัพธ์เป็นข้อความเพื่อการประมวลผลหน่วยความจำน้อยลง
สคริปต์ด้านล่างทำงานได้อย่างสมบูรณ์:
sqlcmd -s Server_name -d Database_name -E -i c:\Temp\Recovery_script.sql -x
อาการ:
เมื่อเรียกใช้สคริปต์การกู้คืนด้วยยูทิลิตี้ sqlcmd 'Sqlcmd: Error: Syntax error ที่บรรทัด XYZ ใกล้คำสั่ง' X 'ในไฟล์' file_name.sql ' พบข้อผิดพลาด
สาเหตุ:
นี่คือข้อ จำกัด ยูทิลิตี้ 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
sqlcmd -S mamxxxxxmu \ sqlserverr -U sa -P x1123 -d QLDB -i D: \ qldbscript.sql
เปิดพรอมต์คำสั่งในการทำงานในฐานะผู้ดูแลระบบ
ป้อนคำสั่งด้านบน
"mamxxxxxmu" คือชื่อคอมพิวเตอร์ "sqlserverr" คือชื่อเซิร์ฟเวอร์ "sa" คือชื่อผู้ใช้ของเซิร์ฟเวอร์ "x1123" คือรหัสผ่านของเซิร์ฟเวอร์ "QLDB" คือชื่อฐานข้อมูล "D: \ qldbscript.sql" เป็นไฟล์สคริปต์ sql เพื่อดำเนินการในฐานข้อมูล
หากคุณต้องการเชื่อมต่อกับ LocalDB ระหว่างการพัฒนาคุณสามารถใช้:
sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql