Comment importer un grand MS SQL.fichier sql?
j'utilise des données SQL RedGate comparer et généré A.fichier sql, afin que je puisse l'exécuter sur ma machine locale. Mais le problème est que le fichier est supérieur à 300 Mo, ce qui signifie que je ne peux pas copier et coller parce que le presse-papiers ne sera pas capable de le gérer, et quand j'essaie d'ouvrir le fichier dans SQL Server Management Studio, je reçois une erreur sur le fait que le fichier est trop grand.
est-il un moyen de courir un grand .fichier sql? Le fichier contient essentiellement des données pour deux nouveaux tableaux.
9 réponses
à partir de l'invite de commande, Démarrer sqlcmd
:
sqlcmd -S <server> -i C:\<your file here>.sql
il suffit de remplacer <server>
par l'emplacement de votre boîte SQL et <your file here>
par le nom de votre script. N'oubliez pas, si vous utilisez une instance SQL, la syntaxe est:
sqlcmd -S <server>\instance.
Voici la liste de tous les arguments que vous pouvez passer 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]
j'avais exactement le même problème et je luttais depuis un moment puis j'ai finalement trouvé la solution qui est de définir le paramètre -a
au sqlcmd
afin de changer sa taille de paquet par défaut:
sqlcmd -S [servername] -d [databasename] -i [scriptfilename] -a 32767
vous pouvez également utiliser cet outil. Il est vraiment utile.
- Prendre l'invite de commande avec des privilèges d'administrateur
- changer le répertoire à l'endroit où le .fichier sql stocké
-
exécuter la commande suivante
sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql
j'utilise MSSQL Express 2014 et aucune des solutions n'a fonctionné pour moi. Ils viennent tous de crasher SQL. Comme j'avais seulement besoin de lancer un script avec beaucoup de simples insert statements j'ai obtenu autour de lui en écrivant une petite application de console comme un dernier recours:
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();
}
}
Exécuter en ligne de commande avec osql, voir ici:
http://metrix.fcny.org/wiki/display/dev/How+à+exécution+un+.SQL+script+aide+OSQL
votre question est assez similaire à celle-ci
, Vous pouvez enregistrer votre fichier/script .txt ou .sql et l'exécuter à partir de Sql Server Management Studio (je pense que le menu est ouvert/Query, puis il suffit d'exécuter la requête dans L'interface SSMS). Vous pouvez devoir mettre à jour la première ligne, en indiquant la base de données à créer ou à sélectionner sur votre machine locale.
Si vous avez à faire ce transfert de données très souvent, vous pouvez aller pour réplication. Selon vos besoins, la réplication de snapshot pourrait être acceptable. Si vous devez synchroniser les données entre vos deux serveurs, vous pouvez opter pour un modèle plus complexe comme la réplication de fusion.
EDIT: Je n'ai pas remarqué que vous aviez des problèmes avec les SSMS liés à la taille du fichier. Ensuite, vous pouvez aller pour la ligne de commande, comme proposé par d'autres, la réplication instantanée (publier sur votre serveur principal, s'abonner sur votre local, répliquer, puis se désabonner) ou même la sauvegarde/restauration
le fichier contient essentiellement des données pour deux nouveaux tableaux.
alors vous pouvez trouver plus simple de simplement DTS (ou SSIS, si C'est SQL Server 2005+) les données sur, si les deux serveurs sont sur le même réseau.
si les deux serveurs ne sont pas sur le même réseau, vous pouvez sauvegarder la base de données source et la restaurer dans une nouvelle base de données sur le serveur de destination. Vous pouvez alors utiliser DTS/ SSIS , ou même un simple INSERT INTO SELECT
, pour transférer les deux tableaux dans la base de données de destination.
Espère que cela vous aidera!
sqlcmd -u UserName -s <ServerName\InstanceName> -i U:\<Path>\script.sql