2015-07-13 4 views
0

J'ai une procédure stockée qui fonctionne comme une tâche planifiée sur SQL Server 2008, et je suis en train de migrer vers SQL Server ce 2014.OSQL Utilitaire - portage d'une procédure à SQL Server 2014

La procédure génère du HTML et remplit le html avec les valeurs d'un db local. Le travail planifié exécute ce proc et enregistre le fichier html.

osql -U sa -P mypassword -Q "report.dbo.sp_mysp" -o c:\temp\web\myfile.html 

La procédure stockée fonctionne bien sur SQL Server 2014 dans SSMS, et je vois une impression avec des balises html et les valeurs de la db.

Mon problème est que lorsque je planifie le travail en utilisant la commande OSQL comme ci-dessus, le fichier html est généré et enregistré correctement, mais il manque les valeurs de la base de données.

Quelqu'un est-il au courant de tout changement dans osql qui pourrait être le problème, ou de nouvelles restrictions sur l'utilisateur sa?

+0

Avez-vous essayé de remplacer SQLCMD par OSQL? Les paramètres devraient être les mêmes. Voulez-vous dire que le fichier est vide ou y a-t-il un problème avec le contenu? Notez que OSQL a été déprécié depuis SQL 2000. –

+0

Merci pour la réponse Dan - oui le fichier a le balisage html seulement, sans les valeurs requises à partir de la base de données. Le passage à SQLCMD n'a eu aucun effet. Lorsque j'exécute la procédure stockée directement, j'obtiens à la fois le balisage et les valeurs de DB. – MarcKirby

+0

Voulez-vous dire que cela renvoie des résultats corrects lors de l'exécution dans SSMS, mais incorrect lors de l'exécution dans OSQL/SQLCMD? – Greg

Répondre

0

OK, celui-ci était un bug. J'ai initialement porté le sp au nouveau serveur en utilisant la fonction intégrée "Create To .. File" dans SSMS, puis j'ai ouvert le fichier et couru sur le nouveau serveur pour le recréer.

Lorsque j'ai créé à partir de zéro et simplement copié et collé la requête, tout fonctionne très bien.