Salut à tous
Sp_helptext limite les sorties à 255 caractères pas lignes
Avec la solution de Philippe j'ai quelques erreurs des mots coupés et
à la ligne
des accents mal interprétés mais je pense que pour cela il faut règler le
COLLATE.
Mais le test sur une procédure de 19660 caractères est OK.
Oliv'
"Nicolas LETULLIER" a écrit dans le
message de news:
Bonjour,
Ne risque-t-il pas d'y avoir un problème si la procédure stockée dépasse
4000 caractères de code ?
Ci-dessous un exemple de procédure utilisant WMI pour (re)créer le script
d'une autre SP. Je n'y ai pas implémenté de gestion d'erreur.
J'y ai ajouté la possibilité de faire le DROP PROCEDURE.
Nicolas.
-- -----------------------------------------------------------------------
CREATE PROCEDURE sp_ProcedureScriptToFile(@StoredProc sysname, @FileName
varchar(255), @DropProcedure bit = 0) AS
DECLARE @FS int, @OLEResult int, @FileID int
DECLARE @Text nvarchar(255)
SET NOCOUNT ON
-- Création/alimentation table temporaire
CREATE TABLE #ResHelpText (Text nvarchar(255))
INSERT INTO #ResHelpText EXEC sp_HelpText @StoredProc
EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
IF @OLEResult <> 0 PRINT 'Scripting.FileSystemObject'
--Ouvre le fichier (2 = ForWriting, 8 = ForAppending)
execute @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT,
@FileName, 2, 1
IF @OLEResult <> 0 PRINT 'OpenTextFile'
IF (@DropProcedure = 1)
BEGIN
SET @Text = 'if exists (select * from dbo.sysobjects where id > object_id(N''[dbo].[' + @StoredProc + ']'') and OBJECTPROPERTY(id,
N''IsProcedure'') = 1)'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text
-- IF @OLEResult <> 0 -- Erreur
SET @Text = 'drop procedure [dbo].[' + @StoredProc + ']'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'SET
QUOTED_IDENTIFIER OFF'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'SET
ANSI_NULLS ON'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
END
DECLARE cr_HelpText CURSOR FOR SELECT Text FROM #ResHelpText
OPEN cr_HelpText
FETCH NEXT FROM cr_HelpText INTO @Text
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Text = REPLACE(@Text,CHAR(10)+CHAR(10),'') -- Première ligne
#10#10
execute @OLEResult = sp_OAMethod @FileID, 'Write', Null, @Text
-- IF @OLEResult <> 0 -- Erreur
FETCH NEXT FROM cr_HelpText INTO @Text
END
CLOSE cr_HelpText
DEALLOCATE cr_HelpText
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS
DROP TABLE #ResHelpText
SET NOCOUNT OFF
GO
-- -----------------------------------------------------------------------
"Philippe T [MS]" a écrit dans le message
news:
> Bonjour,
>
> Pour information, voici ce que j'ai fait et qui fonctionne très bien :
>
> 1er BATCH :
>
> CALL SQL_Generate cp_AddressDeleteByAddressId -- C'est le nom
> procédure
>
> 2ème BATCH :
>
> @ECHO OFF
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> ECHO if exists (select * from dbo.sysobjects where id > > object_id(N'[dbo].[%1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) >
> %1_Entete.sql
> ECHO drop procedure [dbo].[%1] >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO. >> %1_Entete.sql
> ECHO SET QUOTED_IDENTIFIER OFF >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO SET ANSI_NULLS ON >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO. >> %1_Entete.sql
>
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> CALL osql -Usa -Psa -SMon_Server -dMaBase -h-1 -s"" -w4000 /Q"SET
> ON;SELECT SysComments.text FROM SysObjects INNER JOIN SysComments ON
> SysObjects.id = SysComments.id WHERE SysObjects.name = '%1' COLLATE
> database_default ORDER BY SysComments.colid" -o c:sql%1_Corp.sql
>
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> COPY %1_Entete.sql+%1_Corp.sql %1.sql
> DEL c:SQL%1_Entete.sql
> DEL c:SQL%1_Corp.sql
>
>
> Merci beaucoup à toi à à Oliv'
>
> Phil.
> ________________________________________________________
> Philippe TROTIN http://blogs.msdn.com/ptrotin
> Microsoft Services France http://www.microsoft.com/france
>
> "Med Bouchenafa" wrote in message
> news:#
>> Vraiment bizarre ce comportement de OSQL alors que le problème ne se
> pas avec l'analyseur de
>> requêtes
>> Je te propose d'utiliser ISQLW à la place de OSQL.
>> Je viens de faire le test et il est concluant même si je ne comprends
> le pourquoi de ce
>> comportement !!!!
>> Voici ce que j'ai utilisé
>> DECLARE @var sysname
>> SET @var = 'isqlw -E -d Master -i "c:queryIN.sql" -o
>> EXEC master..xp_cmdshell @var
>>
>> Comme tu vois, la syntaxe est très proche de celle d'OSQL
>>
>>
>> --
>> Bien cordialement
>> Med Bouchenafa
>>
>>
>> "Philippe T [MS]" a écrit dans le
> de news:
>>
>> > Bonjour,
>> >
>> > J'avais déja essayé :
>> >
>> > DECLARE @cmd sysname, @var sysname
>> > SET @var = 'osql -U Mon_Compte -P Mon_MotDePasse -S Mon_ServeurSQL -d
>> > Ma_BaseDeDonnee -h-1 -w 4000 -I -Q "EXEC sp_helptext
> Ma_ProcedureStockée" -o
>> > c:sqltest.sql'
>> > EXEC master..xp_cmdshell @cmd
>> >
>> > Mais sans succès. :-(
>> >
>> > Phil.
>> > ________________________________________________________
>> > Philippe TROTIN
>> > Microsoft Services France http://www.microsoft.com/france
>> >
>> > "Med Bouchenafa" wrote in message
>> > news:etg#
>> > > Pourquoi ne pas tout simplement rediriger la sortie de OSQL vers un
>> > fichier.
>> > > Il existe l'option -o pour cela.
>> > > --
>> > > Bien cordialement
>> > > Med Bouchenafa
>> > >
>> > > "Philippe T [MS]" a écrit dans le
> message
>> > de
>> > > news:
>> > > > Bonjour,
>> > > >
>> > > > Pour une fois, c'est moi qui pose ma question !!! :-)
>> > > >
>> > > > Voilà, je vous explique mon problème : je voudrais exporter dans
>> > > > fichier
>> > > > texte le text d'une procédure stockée.
>> > > >
>> > > > Pour l'instant je fais comme cela :
>> > > >
>> > > > DECLARE @cmd sysname, @var sysname
>> > > > SET @var = 'osql -U Mon_Compte -P Mon_MotDePasse -S
> Mon_ServeurSQL -d
>> > > > Ma_BaseDeDonnee -h-1 -w 4000 -I /Q "EXEC sp_helptext
>> > Ma_ProcedureStockée"'
>> > > > SET @cmd = @var + ' > C:SQLtest.txt'
>> > > > EXEC master..xp_cmdshell @cmd
>> > > >
>> > > > Le problème c'est que dans le fichier généré, il saute une ligne
> blanche
>> > > > pour chaque ligne écrite dans le fichier ce qui ne me satisfait
>> > > > pas.
>> > > >
>> > > > Y aurait-il une ame charitable qui serait solutionner ce problème
>> > > > ou
> me
>> > > > trouver une autre solution ???
>> > > >
>> > > > D'avance merci.
>> > > >
>> > > > Phil.
>> > > > ________________________________________________________
>> > > > Philippe TROTIN
> http://blogs.msdn.com/ptrotin
>> > > > Microsoft Services France
>> > > > http://www.microsoft.com/france
>> > > >
>> > > >
>> > >
>> > >
>> >
>> >
>>
>>
>
>
Salut à tous
Sp_helptext limite les sorties à 255 caractères pas lignes
Avec la solution de Philippe j'ai quelques erreurs des mots coupés et
à la ligne
des accents mal interprétés mais je pense que pour cela il faut règler le
COLLATE.
Mais le test sur une procédure de 19660 caractères est OK.
Oliv'
"Nicolas LETULLIER" <nletullier@provibe.ASUPPRIMER.com> a écrit dans le
message de news: OrZxyKL9EHA.3076@TK2MSFTNGP15.phx.gbl...
Bonjour,
Ne risque-t-il pas d'y avoir un problème si la procédure stockée dépasse
4000 caractères de code ?
Ci-dessous un exemple de procédure utilisant WMI pour (re)créer le script
d'une autre SP. Je n'y ai pas implémenté de gestion d'erreur.
J'y ai ajouté la possibilité de faire le DROP PROCEDURE.
Nicolas.
-- -----------------------------------------------------------------------
CREATE PROCEDURE sp_ProcedureScriptToFile(@StoredProc sysname, @FileName
varchar(255), @DropProcedure bit = 0) AS
DECLARE @FS int, @OLEResult int, @FileID int
DECLARE @Text nvarchar(255)
SET NOCOUNT ON
-- Création/alimentation table temporaire
CREATE TABLE #ResHelpText (Text nvarchar(255))
INSERT INTO #ResHelpText EXEC sp_HelpText @StoredProc
EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
IF @OLEResult <> 0 PRINT 'Scripting.FileSystemObject'
--Ouvre le fichier (2 = ForWriting, 8 = ForAppending)
execute @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT,
@FileName, 2, 1
IF @OLEResult <> 0 PRINT 'OpenTextFile'
IF (@DropProcedure = 1)
BEGIN
SET @Text = 'if exists (select * from dbo.sysobjects where id > object_id(N''[dbo].[' + @StoredProc + ']'') and OBJECTPROPERTY(id,
N''IsProcedure'') = 1)'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text
-- IF @OLEResult <> 0 -- Erreur
SET @Text = 'drop procedure [dbo].[' + @StoredProc + ']'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'SET
QUOTED_IDENTIFIER OFF'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'SET
ANSI_NULLS ON'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
END
DECLARE cr_HelpText CURSOR FOR SELECT Text FROM #ResHelpText
OPEN cr_HelpText
FETCH NEXT FROM cr_HelpText INTO @Text
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Text = REPLACE(@Text,CHAR(10)+CHAR(10),'') -- Première ligne
#10#10
execute @OLEResult = sp_OAMethod @FileID, 'Write', Null, @Text
-- IF @OLEResult <> 0 -- Erreur
FETCH NEXT FROM cr_HelpText INTO @Text
END
CLOSE cr_HelpText
DEALLOCATE cr_HelpText
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS
DROP TABLE #ResHelpText
SET NOCOUNT OFF
GO
-- -----------------------------------------------------------------------
"Philippe T [MS]" <ptrotin@online.microsoft.com> a écrit dans le message
news: OkczZbK9EHA.4004@tk2msftngp13.phx.gbl...
> Bonjour,
>
> Pour information, voici ce que j'ai fait et qui fonctionne très bien :
>
> 1er BATCH :
>
> CALL SQL_Generate cp_AddressDeleteByAddressId -- C'est le nom
> procédure
>
> 2ème BATCH :
>
> @ECHO OFF
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> ECHO if exists (select * from dbo.sysobjects where id > > object_id(N'[dbo].[%1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) >
> %1_Entete.sql
> ECHO drop procedure [dbo].[%1] >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO. >> %1_Entete.sql
> ECHO SET QUOTED_IDENTIFIER OFF >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO SET ANSI_NULLS ON >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO. >> %1_Entete.sql
>
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> CALL osql -Usa -Psa -SMon_Server -dMaBase -h-1 -s"" -w4000 /Q"SET
> ON;SELECT SysComments.text FROM SysObjects INNER JOIN SysComments ON
> SysObjects.id = SysComments.id WHERE SysObjects.name = '%1' COLLATE
> database_default ORDER BY SysComments.colid" -o c:sql%1_Corp.sql
>
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> COPY %1_Entete.sql+%1_Corp.sql %1.sql
> DEL c:SQL%1_Entete.sql
> DEL c:SQL%1_Corp.sql
>
>
> Merci beaucoup à toi à à Oliv'
>
> Phil.
> ________________________________________________________
> Philippe TROTIN http://blogs.msdn.com/ptrotin
> Microsoft Services France http://www.microsoft.com/france
>
> "Med Bouchenafa" <com.tetraset@Bouchenafa> wrote in message
> news:#jfT1aC9EHA.3236@TK2MSFTNGP15.phx.gbl...
>> Vraiment bizarre ce comportement de OSQL alors que le problème ne se
> pas avec l'analyseur de
>> requêtes
>> Je te propose d'utiliser ISQLW à la place de OSQL.
>> Je viens de faire le test et il est concluant même si je ne comprends
> le pourquoi de ce
>> comportement !!!!
>> Voici ce que j'ai utilisé
>> DECLARE @var sysname
>> SET @var = 'isqlw -E -d Master -i "c:queryIN.sql" -o
>> EXEC master..xp_cmdshell @var
>>
>> Comme tu vois, la syntaxe est très proche de celle d'OSQL
>>
>>
>> --
>> Bien cordialement
>> Med Bouchenafa
>>
>>
>> "Philippe T [MS]" <ptrotin@online.microsoft.com> a écrit dans le
> de news:
>> OJyfwt88EHA.1392@tk2msftngp13.phx.gbl...
>> > Bonjour,
>> >
>> > J'avais déja essayé :
>> >
>> > DECLARE @cmd sysname, @var sysname
>> > SET @var = 'osql -U Mon_Compte -P Mon_MotDePasse -S Mon_ServeurSQL -d
>> > Ma_BaseDeDonnee -h-1 -w 4000 -I -Q "EXEC sp_helptext
> Ma_ProcedureStockée" -o
>> > c:sqltest.sql'
>> > EXEC master..xp_cmdshell @cmd
>> >
>> > Mais sans succès. :-(
>> >
>> > Phil.
>> > ________________________________________________________
>> > Philippe TROTIN
>> > Microsoft Services France http://www.microsoft.com/france
>> >
>> > "Med Bouchenafa" <com.hotmail@bouchenafa> wrote in message
>> > news:etg#z628EHA.2676@TK2MSFTNGP12.phx.gbl...
>> > > Pourquoi ne pas tout simplement rediriger la sortie de OSQL vers un
>> > fichier.
>> > > Il existe l'option -o pour cela.
>> > > --
>> > > Bien cordialement
>> > > Med Bouchenafa
>> > >
>> > > "Philippe T [MS]" <ptrotin@online.microsoft.com> a écrit dans le
> message
>> > de
>> > > news: eoLtie08EHA.3828@TK2MSFTNGP09.phx.gbl...
>> > > > Bonjour,
>> > > >
>> > > > Pour une fois, c'est moi qui pose ma question !!! :-)
>> > > >
>> > > > Voilà, je vous explique mon problème : je voudrais exporter dans
>> > > > fichier
>> > > > texte le text d'une procédure stockée.
>> > > >
>> > > > Pour l'instant je fais comme cela :
>> > > >
>> > > > DECLARE @cmd sysname, @var sysname
>> > > > SET @var = 'osql -U Mon_Compte -P Mon_MotDePasse -S
> Mon_ServeurSQL -d
>> > > > Ma_BaseDeDonnee -h-1 -w 4000 -I /Q "EXEC sp_helptext
>> > Ma_ProcedureStockée"'
>> > > > SET @cmd = @var + ' > C:SQLtest.txt'
>> > > > EXEC master..xp_cmdshell @cmd
>> > > >
>> > > > Le problème c'est que dans le fichier généré, il saute une ligne
> blanche
>> > > > pour chaque ligne écrite dans le fichier ce qui ne me satisfait
>> > > > pas.
>> > > >
>> > > > Y aurait-il une ame charitable qui serait solutionner ce problème
>> > > > ou
> me
>> > > > trouver une autre solution ???
>> > > >
>> > > > D'avance merci.
>> > > >
>> > > > Phil.
>> > > > ________________________________________________________
>> > > > Philippe TROTIN
> http://blogs.msdn.com/ptrotin
>> > > > Microsoft Services France
>> > > > http://www.microsoft.com/france
>> > > >
>> > > >
>> > >
>> > >
>> >
>> >
>>
>>
>
>
Salut à tous
Sp_helptext limite les sorties à 255 caractères pas lignes
Avec la solution de Philippe j'ai quelques erreurs des mots coupés et
à la ligne
des accents mal interprétés mais je pense que pour cela il faut règler le
COLLATE.
Mais le test sur une procédure de 19660 caractères est OK.
Oliv'
"Nicolas LETULLIER" a écrit dans le
message de news:
Bonjour,
Ne risque-t-il pas d'y avoir un problème si la procédure stockée dépasse
4000 caractères de code ?
Ci-dessous un exemple de procédure utilisant WMI pour (re)créer le script
d'une autre SP. Je n'y ai pas implémenté de gestion d'erreur.
J'y ai ajouté la possibilité de faire le DROP PROCEDURE.
Nicolas.
-- -----------------------------------------------------------------------
CREATE PROCEDURE sp_ProcedureScriptToFile(@StoredProc sysname, @FileName
varchar(255), @DropProcedure bit = 0) AS
DECLARE @FS int, @OLEResult int, @FileID int
DECLARE @Text nvarchar(255)
SET NOCOUNT ON
-- Création/alimentation table temporaire
CREATE TABLE #ResHelpText (Text nvarchar(255))
INSERT INTO #ResHelpText EXEC sp_HelpText @StoredProc
EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
IF @OLEResult <> 0 PRINT 'Scripting.FileSystemObject'
--Ouvre le fichier (2 = ForWriting, 8 = ForAppending)
execute @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT,
@FileName, 2, 1
IF @OLEResult <> 0 PRINT 'OpenTextFile'
IF (@DropProcedure = 1)
BEGIN
SET @Text = 'if exists (select * from dbo.sysobjects where id > object_id(N''[dbo].[' + @StoredProc + ']'') and OBJECTPROPERTY(id,
N''IsProcedure'') = 1)'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text
-- IF @OLEResult <> 0 -- Erreur
SET @Text = 'drop procedure [dbo].[' + @StoredProc + ']'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'SET
QUOTED_IDENTIFIER OFF'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'SET
ANSI_NULLS ON'
execute @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, 'GO'
END
DECLARE cr_HelpText CURSOR FOR SELECT Text FROM #ResHelpText
OPEN cr_HelpText
FETCH NEXT FROM cr_HelpText INTO @Text
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Text = REPLACE(@Text,CHAR(10)+CHAR(10),'') -- Première ligne
#10#10
execute @OLEResult = sp_OAMethod @FileID, 'Write', Null, @Text
-- IF @OLEResult <> 0 -- Erreur
FETCH NEXT FROM cr_HelpText INTO @Text
END
CLOSE cr_HelpText
DEALLOCATE cr_HelpText
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS
DROP TABLE #ResHelpText
SET NOCOUNT OFF
GO
-- -----------------------------------------------------------------------
"Philippe T [MS]" a écrit dans le message
news:
> Bonjour,
>
> Pour information, voici ce que j'ai fait et qui fonctionne très bien :
>
> 1er BATCH :
>
> CALL SQL_Generate cp_AddressDeleteByAddressId -- C'est le nom
> procédure
>
> 2ème BATCH :
>
> @ECHO OFF
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> ECHO if exists (select * from dbo.sysobjects where id > > object_id(N'[dbo].[%1]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) >
> %1_Entete.sql
> ECHO drop procedure [dbo].[%1] >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO. >> %1_Entete.sql
> ECHO SET QUOTED_IDENTIFIER OFF >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO SET ANSI_NULLS ON >> %1_Entete.sql
> ECHO GO >> %1_Entete.sql
> ECHO. >> %1_Entete.sql
>
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> CALL osql -Usa -Psa -SMon_Server -dMaBase -h-1 -s"" -w4000 /Q"SET
> ON;SELECT SysComments.text FROM SysObjects INNER JOIN SysComments ON
> SysObjects.id = SysComments.id WHERE SysObjects.name = '%1' COLLATE
> database_default ORDER BY SysComments.colid" -o c:sql%1_Corp.sql
>
> REM ----------------------------------------
> REM -
> REM ----------------------------------------
> COPY %1_Entete.sql+%1_Corp.sql %1.sql
> DEL c:SQL%1_Entete.sql
> DEL c:SQL%1_Corp.sql
>
>
> Merci beaucoup à toi à à Oliv'
>
> Phil.
> ________________________________________________________
> Philippe TROTIN http://blogs.msdn.com/ptrotin
> Microsoft Services France http://www.microsoft.com/france
>
> "Med Bouchenafa" wrote in message
> news:#
>> Vraiment bizarre ce comportement de OSQL alors que le problème ne se
> pas avec l'analyseur de
>> requêtes
>> Je te propose d'utiliser ISQLW à la place de OSQL.
>> Je viens de faire le test et il est concluant même si je ne comprends
> le pourquoi de ce
>> comportement !!!!
>> Voici ce que j'ai utilisé
>> DECLARE @var sysname
>> SET @var = 'isqlw -E -d Master -i "c:queryIN.sql" -o
>> EXEC master..xp_cmdshell @var
>>
>> Comme tu vois, la syntaxe est très proche de celle d'OSQL
>>
>>
>> --
>> Bien cordialement
>> Med Bouchenafa
>>
>>
>> "Philippe T [MS]" a écrit dans le
> de news:
>>
>> > Bonjour,
>> >
>> > J'avais déja essayé :
>> >
>> > DECLARE @cmd sysname, @var sysname
>> > SET @var = 'osql -U Mon_Compte -P Mon_MotDePasse -S Mon_ServeurSQL -d
>> > Ma_BaseDeDonnee -h-1 -w 4000 -I -Q "EXEC sp_helptext
> Ma_ProcedureStockée" -o
>> > c:sqltest.sql'
>> > EXEC master..xp_cmdshell @cmd
>> >
>> > Mais sans succès. :-(
>> >
>> > Phil.
>> > ________________________________________________________
>> > Philippe TROTIN
>> > Microsoft Services France http://www.microsoft.com/france
>> >
>> > "Med Bouchenafa" wrote in message
>> > news:etg#
>> > > Pourquoi ne pas tout simplement rediriger la sortie de OSQL vers un
>> > fichier.
>> > > Il existe l'option -o pour cela.
>> > > --
>> > > Bien cordialement
>> > > Med Bouchenafa
>> > >
>> > > "Philippe T [MS]" a écrit dans le
> message
>> > de
>> > > news:
>> > > > Bonjour,
>> > > >
>> > > > Pour une fois, c'est moi qui pose ma question !!! :-)
>> > > >
>> > > > Voilà, je vous explique mon problème : je voudrais exporter dans
>> > > > fichier
>> > > > texte le text d'une procédure stockée.
>> > > >
>> > > > Pour l'instant je fais comme cela :
>> > > >
>> > > > DECLARE @cmd sysname, @var sysname
>> > > > SET @var = 'osql -U Mon_Compte -P Mon_MotDePasse -S
> Mon_ServeurSQL -d
>> > > > Ma_BaseDeDonnee -h-1 -w 4000 -I /Q "EXEC sp_helptext
>> > Ma_ProcedureStockée"'
>> > > > SET @cmd = @var + ' > C:SQLtest.txt'
>> > > > EXEC master..xp_cmdshell @cmd
>> > > >
>> > > > Le problème c'est que dans le fichier généré, il saute une ligne
> blanche
>> > > > pour chaque ligne écrite dans le fichier ce qui ne me satisfait
>> > > > pas.
>> > > >
>> > > > Y aurait-il une ame charitable qui serait solutionner ce problème
>> > > > ou
> me
>> > > > trouver une autre solution ???
>> > > >
>> > > > D'avance merci.
>> > > >
>> > > > Phil.
>> > > > ________________________________________________________
>> > > > Philippe TROTIN
> http://blogs.msdn.com/ptrotin
>> > > > Microsoft Services France
>> > > > http://www.microsoft.com/france
>> > > >
>> > > >
>> > >
>> > >
>> >
>> >
>>
>>
>
>