2012-07-03 15 views
52

Estoy usando SQL Server 2008 R2, tengo una secuencia de comandos para actualizar la base de datos, esa secuencia de comandos es aproximadamente de 50 MB y contiene unas 800,000 líneas.Obteniendo un error al ejecutar una secuencia de comandos de 50 MB en SQL Server 2008 R2

error:

TITLE: Microsoft SQL Server Management Studio

Cannot execute script.

ADDITIONAL INFORMATION:

Insufficient memory to continue the execution of the program. (mscorlib)

Puede alguien por favor me ayude a ejecutar este script sin conseguir de este error?

Respuesta

84

utilice la herramienta de línea de comandos SQLCMD que es mucho más ligera en la memoria. Es tan simple como:

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

Se necesitan credenciales válidas para acceder a la instancia de SQL Server o incluso acceder a una base de datos

+0

cuando lo probé utilizando el código anterior es que me da algún error, Msg 4060, nivel 11, estado 1, Server (mi PC nombre de inicio de sesión), Línea 1 No se puede abrir la base de datos "(local)" solicitada por el inicio de sesión. El inicio de sesión falló. Msg 18456, Nivel 14, Estado 1, Servidor (el nombre de inicio de sesión de mi PC), Error de inicio de sesión de la Línea 1 para el usuario 'mi nombre de usuario de inicio de sesión'. –

+0

porque la respuesta fue incorrecta, es la base de datos para el argumento "-d" –

+0

Uso SQLCMD -d maestro -i D: \ BankMaster.sql para la nueva base de datos – RckLN

53

adición a la respuesta de @ user1293068, que necesitaba para especificar el nombre de la instancia. Aquí está mi sintaxis completa:

sqlcmd -S <ComputerName>\<InstanceName> -d <DatabaseName> -i <MyScript.sql> 

Esto se documenta en el artículo de Technet Use the sqlcmd Utility.

(Tenga en cuenta que debe introducir un valor interruptor de "S", no "-s". El cambio es entre mayúsculas y minúsculas).

+1

Agradable y limpio. – misha

+2

ejemplo de lo que he usado -> 'C: \ Users \ tstick \ Documents> sqlcmd -S server.subdomain.companyname.com, 4184 -d ebimap -i SQLscript.sql' –

+1

Parece el nombre de instancia predeterminado (MSSQLSERVER)) necesita ser excluido para conectarse, por ejemplo 'sqlcmd -S localhost -d db' y no' sqlcmd -S localhost \ MSSQLSERVER -d db' – BurnsBA

9

También puede intentar aumentar el valor máximo de memoria del servidor en las propiedades del servidor .
Para editar esta configuración, haga clic con el botón derecho en el nombre del servidor y seleccione Propiedades> pestaña Memoria.

me encontré con este error al intentar ejecutar un script SQL en 30MB SSMS 2012.
Después de aumentar el valor de 1024MB a 2048MB yo era capaz de ejecutar el script.

+0

Gracias .. Funcionó para mí ... – Mahib

+0

¡Gracias! –

+0

no puedo verificarlo yo mismo. "el usuario no tiene permiso para realizar esta acción" –

6

Ok, ninguna de las respuestas fue suficiente para restaurar mi script correctamente.

Así:

  1. Asegúrese de que su cuenta de la red tiene suficientes permisos de acceso tanto instancia de SQL Server y la base de datos específica que pretende restaurar.

  2. Lo mejor es que la base de datos tiene la intención de restaurar la realidad existe, si es meramente genera a partir de generar secuencias de comandos (con modificaciones para incluir tanto el esquema y los datos)

  3. Ejecutar la herramienta de línea de comandos en modo de administrador (si es necesario), por ejemplo, escriba CMD desde Ejecutar en el menú de inicio

  4. En la herramienta de línea de comandos, escriba algo como "SQLCMD -d CMS -i C:\Carnotaurus\Data\script.sql". Aquí, CMS es el nombre de la base de datos que tengo la intención de restaurar y "C:\Carnotaurus\Data\script.sql" es la ruta completa del archivo de la secuencia de comandos de restauración que fue generada por Generar secuencias de comandos en SMSS.

Espero que esto aclare algunos pasos que faltan.

-1

También encontré un problema similar en SQL Server 2012, ya que el tamaño de mi archivo era de 70 MB.

Solución que funcionó para mí, aumentar el archivo de registro a Ilimitado.

  1. Abra SQL Server Management Studio
  2. En el Explorador de objetos, haga clic en el botón derecho en el nombre de base de datos y haga clic en Propiedades
  3. En la sección de archivos, Cambio Crecimiento automático tamaño de datos y de registro de tamaño ilimitado.
+0

Respuesta no relacionada –

+0

@Charush ¿Puede usted por favor? ¿Eliminar tu respuesta? Es totalmente irrelevante. – Zeeshan

7

Si se requieren credenciales

sqlcmd -S <ComputerName>\<InstanceName> -U <username> -P <password> -d <DatabaseName> -i <MyScript.sql> 
Cuestiones relacionadas