Impossibile eseguire lo script: memoria insufficiente per continuare l'esecuzione del programma


88

Ho un file sql da 123 MB che devo eseguire sul mio PC locale. Ma sto ottenendo

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

inserisci qui la descrizione dell'immagine

Come risolvere questo problema?


@marc_s Quando faccio clic su Ctlr + E, viene visualizzato immediatamente questo errore
user960567

1
Possibile duplicato dell'errore di
acquisizione

Risposte:


126

usa lo strumento della riga di comando SQLCMD che è molto più snello sulla memoria. È semplice come:

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

Sono necessarie credenziali valide per accedere all'istanza di SQL Server o anche per accedere a un database

Preso da qui .


26
Con le credenziali complete, specificando db e server: sqlcmd -S <YOUR-SERVER> -U <YOUR-USER> -P <YOUR-PASSWORD> -d <YOUR-DATABASE> -i <YOUR-SQL-FILE-PATH.sql >
a4bike

1
Ho questo problema: "Il numero di espressioni di valori di riga nell'istruzione INSERT supera il numero massimo consentito di 1000 valori di riga."
Christian Fredh

3
aggiungi -eper connessione attendibile
smurtagh

33

Potrebbe aiutarti! Si prega di vedere i passaggi seguenti.

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

  • Apri cmd.exe come amministratore.
  • Crea cartella Documenti.
  • Metti il ​​tuo file SQL Script (script.sql) nella cartella dei documenti.
  • Digita la query con sqlcmd, nome-server, nome-database e nome-file-script come nella query sopra evidenziata o sotto la schermata della riga di comando.

inserisci qui la descrizione dell'immagine


Puoi aggiungere il nome utente -sa e la password -123, sqlcmd -S tramite server -U sa -P 123 -d TelstraDeployed -i SQLQuery1.sql
Anil Singh

mi dà l'errore Sqlcmd: Errore: Mircorsoft SQL Server Native Client 10.0: il client non riesce a stabilire la connessione a causa di un errore di prelogin.
gbbosmiya

11

Puoi anche aumentare semplicemente il valore di Memoria minima per query nelle proprietà del server. Per modificare questa impostazione, fare clic con il pulsante destro del mouse sul nome del server e selezionare Proprietà> scheda Memoria.

Ho riscontrato questo errore durante il tentativo di eseguire uno script SQL da 30 MB in SSMS 2012. Dopo aver aumentato il valore da 1024 MB a 2048 MB, sono stato in grado di eseguire lo script.

(Questa è la stessa risposta che ho fornito qui )


10

Per l'autenticazione di Windows utilizzare questo cmd sql

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

Nota: se è presente uno spazio nel percorso del file sql, utilizzare "(virgolette)"

Per l'autenticazione di SQL Server, utilizzare questo cmd sql

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

-S TestSQLServer \ SQLEXPRESS: qui specifica il nome di SQL Server

-U sa: nome utente (in caso di autenticazione SQL Server)

-P sasa: password (in caso di autenticazione SQL Server)

-d AdventureWorks2018: il nome del database viene qui

-i "d: \ document \ sql document \ script.sql": percorso del file SQLFile


5

Se capisco correttamente il tuo problema, stai tentando di ripristinare (transact sql) xyz.sql - database + schema. Puoi provare questo comando che ha funzionato per me:

SQLCMD -U sa -i xyz.sql

4

Il mio database era più grande di 500 MB, quindi ho utilizzato quanto segue

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

Ha caricato tutto, inclusi gli SP

* NB: esegui cmd come amministratore


2

A volte, a causa delle grandi dimensioni dello script e dei dati, riscontriamo questo tipo di errore. Il server necessita di memoria sufficiente per eseguire e fornire il risultato. Possiamo semplicemente aumentare la dimensione della memoria, per query.

Devi solo andare alle proprietà del server sql> scheda Memoria (lato sinistro)> Ora imposta il limite di memoria massimo che desideri aggiungere.

Inoltre, c'è un'opzione in alto, "Risultati in testo", che consuma meno memoria rispetto all'opzione "Risultati in griglia", possiamo anche andare per Risultato in testo per meno memoria di esecuzione.


2

Prova questo passaggio,

1) Apri PowerShell

2) Scrivi questo comando:

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

3) Premi Invio

:-)

inserisci qui la descrizione dell'immagine


2

Lo script sottostante funziona perfettamente:

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

Sintomi:

Quando si esegue uno script di ripristino con l'utilità sqlcmd, viene visualizzato il messaggio "Sqlcmd: Error: Syntax error alla riga XYZ accanto al comando" X "nel file" file_name.sql "." si è verificato un errore.

Causa:

Questa è una limitazione dell'utilità sqlcmd. Se lo script SQL contiene il segno del dollaro ($) in qualsiasi forma, l'utilità non è in grado di eseguire correttamente lo script, poiché sostituisce automaticamente tutte le variabili per impostazione predefinita.

Risoluzione:

Per eseguire uno script che ha un segno di dollaro ($) in qualsiasi forma, è necessario aggiungere il parametro "-x" alla riga di comando.

per esempio

Originale: sqlcmd -s Nome_server -d Nome_database -E -ic: \ Temp \ Recovery_script.sql

Risolto: sqlcmd -s Server_name -d Database_name -E -ic: \ Temp \ Recovery_script.sql -x


$ commento è stato molto utile. Grazie
Pale Ale

1

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

  • Apri il prompt dei comandi in Esegui come amministratore

  • inserisci il comando sopra

"mamxxxxxmu" è il nome del computer "sqlserverr" è il nome del server "sa" è il nome utente del server "x1123" è la password del server "QLDB" è il nome del database "D: \ qldbscript.sql" è il file di script sql da eseguire nel database


1

Se è necessario connettersi a LocalDB durante lo sviluppo, è possibile utilizzare:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d dbname -i file.sql
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.