2008-10-22 8 views
9

J'ai un gros fichier de script (près de 300Mo, et beaucoup plus grand dans le futur) que j'essaie de lancer. Il a été suggéré dans les commentaires de la réponse de Gulzar à mon question about it que je devrais changer le timeout du script à 0 (pas de timeout).Comment définir le délai d'un script SQL Server à partir du script?

Quelle est la meilleure façon de définir ce délai d'expiration à partir du script? En ce moment j'ai tout cela en haut du fichier de script dans l'espoir que l'un d'eux fait quelque chose:

sp_configure 'remote login timeout', 600 
go 
sp_configure 'remote query timeout', 0 
go 
sp_configure 'query wait', 0 
go 
reconfigure with override 
go 

Cependant, je reçois toujours le même résultat et je ne peux pas dire si je « m réussir à régler le délai d'attente parce que la réponse de sqlcmd.exe est moins utile erreur du monde message:

Sqlcmd: Error: Scripting error.

Merci.

Répondre

5
sqlcmd -t {n} 

Où {n} doit être un nombre compris entre 0 et 65535.

Notez que votre question est un peu trompeur, car the server has no concept of a timeout et vous ne pouvez donc définir le délai au sein de votre script.

Dans votre contexte, le délai d'attente est appliquée par sqlcmd

+0

@edg: Je n'ai jamais entendu parler de l'option -t de sqlcmd et je ne l'ai pas trouvée dans la documentation. Mais je l'ai vérifié sqlcmd -? - et voilà! Bravo! – splattne

+0

Je suppose que cela ne fonctionnera pas. sqlcmd.exe sans définir -t signifie explicitement "no timeout" – Tomalak

+1

Yup. Techniquement, la bonne réponse à ma question, mais n'a pas aidé le problème de base. Merci quand même! – tags2k

4

Je pense qu'il existe aucun concept de délai d'expiration dans un script SQL sur SQL Server. Vous devez définir le délai d'attente dans le calque/client appelant.

Selon this MSDN article, vous pouvez essayer d'augmenter le délai d'attente de cette façon:

exec sp_configure 'remote query timeout', 0 
go 
reconfigure with override 
go 

« Utilisez l'option délai de requête à distance pour spécifier la durée, en secondes, une opération à distance peut prendre avant les temps Microsoft SQL Server La valeur par défaut est 600, ce qui permet une attente de 10 minutes Cette valeur s'applique à une connexion sortante initiée par le moteur de base de données en tant que requête distante Cette valeur n'a aucun effet sur les requêtes reçues par le moteur de base de données.

P.S .: Par 300 Mo, vous voulez dire que le fichier résultant est de 300 MB? Je ne souhaite pas que le fichier script lui-même soit de 300 Mo. Ce serait un record du monde. ;-)

+1

Oui, le script SQL lui-même est ~ 300Mo. Je doute que ce soit un record du monde car ce n'est que 1,4 million de rangées d'une table très simple! – tags2k

+0

@ tags2k oh, il est utilisé pour insérer des données dans les instructions "INSERT" ... Je suis sûr qu'il y a une raison de le faire de cette façon, mais vous ne pouvez pas obtenir les données dans un fichier texte et les importer via un paquet DTS ou quelque chose de similaire? – splattne

+0

Chaque ligne doit être vérifiée via mon API, et même si je suis sûr que je pourrais répliquer toutes les vérifications via un paquet DTS, pour le temps et le stress requis, je pourrais aussi simplement diviser le script SQL que j'ai déjà. – tags2k