Cómo importar un MS SQL grande.archivo sql?


Utilizo RedGate SQL data compare y generé un .archivo sql, para poder ejecutarlo en mi máquina local. Pero el problema es que el archivo tiene más de 300 mb, lo que significa que no puedo copiar y pegar porque el portapapeles no podrá manejarlo, y cuando intento abrir el archivo en SQL Server Management Studio recibo un error sobre el archivo que es demasiado grande.

Hay una manera de ejecutar un grande .archivo sql? El archivo básicamente contiene datos para dos tablas nuevas.

Author: Jim Ashworth, 2009-01-11

9 answers

Desde el símbolo del sistema, inicie sqlcmd:

sqlcmd -S <server> -i C:\<your file here>.sql 

Simplemente reemplace <server> con la ubicación de su cuadro SQL y <your file here> con el nombre de su script. No olvides que si estás usando una instancia SQL la sintaxis es:

sqlcmd -S <server>\instance.

Aquí está la lista de todos los argumentos que puede pasar sqlcmd:

Sqlcmd            [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  [-d use database name] [-l login timeout]     [-t query timeout] 
  [-h headers]           [-s colseparator]      [-w screen width]
  [-a packetsize]        [-e echo input]        [-I Enable Quoted Identifiers]
  [-c cmdend]            [-L[c] list servers[clean output]]
  [-q "cmdline query"]   [-Q "cmdline query" and exit] 
  [-m errorlevel]        [-V severitylevel]     [-W remove trailing spaces]
  [-u unicode output]    [-r[0|1] msgs to stderr]
  [-i inputfile]         [-o outputfile]        [-z new password]
  [-f  | i:[,o:]] [-Z new password and exit] 
  [-k[1|2] remove[replace] control characters]
  [-y variable length type display width]
  [-Y fixed length type display width]
  [-p[1] print statistics[colon format]]
  [-R use client regional setting]
  [-b On error batch abort]
  [-v var = "value"...]  [-A dedicated admin connection]
  [-X[1] disable commands, startup script, environment variables [and exit]]
  [-x disable variable substitution]
  [-? show syntax summary] 
 367
Author: Ray Booysen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-08 18:03:13

Tuve exactamente el mismo problema y había estado luchando por un tiempo y finalmente encontré la solución que es establecer -a el parámetro sqlcmd para cambiar su tamaño de paquete predeterminado:

sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767
 51
Author: Takuro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-14 09:08:11

También puede usar esta herramienta. Es realmente útil.

BigSqlRunner

 18
Author: Yigit Yuksel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-25 09:25:31
  1. Tomar símbolo del sistema con privilegios de administrador
  2. Cambiar el directorio a donde el .archivo sql almacenado
  3. Ejecute el siguiente comando

    sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql

 7
Author: Syam Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-03 09:48:53

Estoy usando MSSQL Express 2014 y ninguna de las soluciones funcionó para mí. Todos se estrellaron SQL. Como solo necesitaba ejecutar un script de one off con muchas instrucciones de inserción simples, lo evité escribiendo una pequeña aplicación de consola como último recurso:

class Program
{
    static void Main(string[] args)
    {
        RunScript();
    }

    private static void RunScript()
    {
        My_DataEntities db = new My_DataEntities();

        string line;

        System.IO.StreamReader file =
           new System.IO.StreamReader("c:\\ukpostcodesmssql.sql");
        while ((line = file.ReadLine()) != null)
        {
            db.Database.ExecuteSqlCommand(line);
        }

        file.Close();
    }
}
 4
Author: Animus Miles-Militis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-06 07:17:42
 2
Author: BobbyShaftoe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-10 22:55:55

Su pregunta es bastante similar a esta

Puede guardar su archivo/script como .txt or .sql y ejecutarlo desde Sql Server Management Studio (creo que el menú está Abierto/Consulta, a continuación, simplemente ejecutar la consulta en la interfaz SSMS). Tiene que actualizar la primera línea, indicando la base de datos a crear o seleccionar en su máquina local.

Si tiene que hacer esta transferencia de datos muy a menudo, entonces podría ir para la replicación. En función de sus necesidades, la replicación de instantáneas podría estar bien. Si tiene que sincronizar los datos entre sus dos servidores, podría optar por un modelo más complejo, como la replicación merge.

EDITAR: No me di cuenta de que tenía problemas con los SSMS vinculados al tamaño del archivo. A continuación, puede optar por la línea de comandos, según lo propuesto por otros, replicación de instantáneas (publicar en su servidor principal, suscribirse en su local, replicar, luego cancelar la suscripción) o incluso copia de seguridad/restauración

 1
Author: Philippe Grondier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:10:30

El archivo básicamente contiene datos para dos tablas nuevas.

Entonces puede que le resulte más sencillo simplemente DTS (o SSIS, si se trata de SQL Server 2005+) los datos sobre, si los dos servidores están en la misma red.

Si los dos servidores no están en la misma red, puede hacer una copia de seguridad de la base de datos de origen y restaurarla en una nueva base de datos en el servidor de destino. Luego puede usar DTS / SSIS, o incluso un simple INSERT INTO SELECT, para transferir las dos tablas a la base de datos de destino.

 1
Author: P Daddy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-01-11 00:18:49

Espero que esto te ayude!

sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql
 1
Author: ortegatorres10,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-18 16:40:58