À partir de l'invite de commande, démarrez sqlcmd
:
sqlcmd -S <server> -i C:\<your file here>.sql
Remplacez-le simplement <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]
INSERT INTO table_name (text) VALUES ('some text bla bla 'bla' text')
. J'ai une erreur avec les citations. SO Que dois-je utiliser (quel paramètre) pour gérer cette erreur? MerciJ'avais exactement le même problème et je luttais depuis un moment, puis j'ai finalement trouvé la solution qui consiste à définir le
-a
paramètre sursqlcmd
afin de changer sa taille de paquet par défaut:la source
sqlcmd -S <Servername> -U <Username> -P <password> -d <Databasename> -i <filename>
Vous pouvez également utiliser cet outil. C'est vraiment utile.
BigSqlRunner
la source
Prendre l'invite de commande avec des privilèges d'administrateur
Modifiez le répertoire dans lequel le fichier .sql est stocké
Exécutez la commande suivante
sqlcmd -S 'your server name' -U 'user name of server' -P 'password of server' -d 'db name'-i script.sql
la source
J'utilise MSSQL Express 2014 et aucune des solutions n'a fonctionné pour moi. Ils ont tous juste écrasé SQL. Comme je n'avais besoin que d' exécuter un script unique avec de nombreuses instructions d'insertion simples, je l'ai contourné en écrivant une petite application console en tout dernier recours:
la source
Exécutez-le sur la ligne de commande avec osql, voir ici:
http://metrix.fcny.org/wiki/display/dev/How+to+execute+a+.SQL+script+using+OSQL
la source
sqlcmd
remplaceosql
.J'ai eu un problème similaire. Mon fichier avec le script sql était sur 150MB de taille (presque 900k de très simple INSERT s). J'ai utilisé la solution conseillée par Takuro (comme réponse à cette question) mais j'ai quand même eu une erreur avec un message disant qu'il n'y avait pas assez de mémoire ("Il n'y a pas assez de mémoire système dans le pool de ressources 'interne' pour exécuter cette requête").
Ce qui m'a aidé, c'est que je mets la commande GO après chaque 50 000 INSERT .
(Il ne s'agit pas directement de la question (taille du fichier) mais je pense que cela résout le problème qui est indirectement lié à la grande taille du script sql lui-même. Dans mon cas, de nombreuses commandes d'insertion)
la source
Votre question est assez similaire à celle-ci
Vous pouvez enregistrer votre fichier / script au format .txt ou .sql et l'exécuter à partir de Sql Server Management Studio (je pense que le menu est Ouvrir / Requête, puis exécutez simplement la requête dans l'interface SSMS). Vous devrez peut-être mettre à jour la première ligne, indiquant la base de données à créer ou à sélectionner sur votre machine locale.
Si vous devez effectuer ce transfert de données très souvent, vous pouvez alors opter pour la réplication. Selon vos besoins, la réplication d'instantanés peut être correcte. Si vous devez synchroniser les données entre vos deux serveurs, vous pouvez opter pour un modèle plus complexe tel que la réplication de fusion.
EDIT: Je n'ai pas remarqué que vous aviez des problèmes avec SSMS liés à la taille du fichier. Ensuite, vous pouvez opter pour la ligne de commande, comme proposé par d'autres, la réplication d'instantanés (publier sur votre serveur principal, vous abonner sur votre serveur local, répliquer, puis vous désabonner) ou même sauvegarder / restaurer
la source
Ensuite, vous pouvez trouver plus simple de simplement DTS (ou SSIS, s'il s'agit de SQL Server 2005+) sur les données, 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. Ensuite, vous pouvez utiliser DTS / SSIS, ou même un simple
INSERT INTO SELECT
, pour transférer les deux tables vers la base de données de destination.la source
J'espère que cela vous aidera!
la source
J'ai rencontré le même problème et investi une journée entière pour trouver le moyen de sortir, mais cela est résolu en faisant la copie du fichier .sql et en modifiant l'extension en fichier .txt et en ouvrant le fichier .txt dans le navigateur Chrome. J'ai vu la magie et le fichier est ouvert dans un navigateur.
Merci et meilleures salutations,
la source