OVH Cloud OVH Cloud

mettre les affichages d'un script dans un fichier

1 réponse
Avatar
tintin
Bonjour,

Avec SQL-Query Analyser interactif, je peux rediriger le résultat d'une
requête vers un fichier, mais n'est-ce pas possible grâce à une instruction
dans le script, avec effet à partir de et jusqu'à certaines requêtes ?

Je sais que c'est possible pour un traitement lancé par l'agent
SQL-Servermais cela ne convient pas, car c'est pour l'ensemble du job.

Merci de votre aide.

Cordialement

1 réponse

Avatar
Philippe T [MS]
Bonjour,

Voici des exemples depuis du T-SQL pour écrire dans un fichier texte mais
cela ne vous permet pas de renvoyer le résultat d'une requête (pour cela,
utiliser plutôt OSQL -o output_file) :

CREATE PROCEDURE tp_File_OpenFile
(
@FileName nvarchar(250), -- Name of the file to create
@FS int OUTPUT, -- File system object reference
@FileID int OUTPUT -- File id reference
)
AS
BEGIN
SET NOCOUNT ON

DECLARE @OLEResult int

-- Create scripting object
EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT
IF @OLEResult <> 0 RETURN -1

--Ouvre le fichier (2 = ForWriting, 8 = ForAppending)
EXECUTE @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT,
@FileName, 2, 1
IF @OLEResult <> 0 RETURN -1

END
GO


CREATE PROCEDURE tp_File_CloseFile
(
@FS int, -- File system object reference
@FileID int -- File id reference
)
AS
BEGIN
SET NOCOUNT ON

DECLARE @OLEResult int

-- Close file
EXECUTE @OLEResult = sp_OADestroy @FileID
EXECUTE @OLEResult = sp_OADestroy @FS

END
GO

CREATE PROCEDURE tp_File_WriteFile
(
@FileID int, -- File id reference
@Text nvarchar(4000) -- Text to write
)
AS
BEGIN
SET NOCOUNT ON

DECLARE @OLEResult int

-- Write the text in the file
EXECUTE @OLEResult = sp_OAMethod @FileID, 'WriteLine', Null, @Text
IF @OLEResult <> 0 RETURN -1

END
GO


Après, il suffit de faire :

DECLARE @FS int
DECLARE @FileID int

EXEC tp_File_OpenFile 'C:SQLtest.txt', @FS OUTPUT, @FileID OUTPUT

EXEC tp_File_WriteFile @FileID, '1. ceci est un test'
EXEC tp_File_WriteFile @FileID, '2. ceci est un autre test'

EXEC tp_File_CloseFile @FS, @FileID


----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"tintin" wrote in message
news:
Bonjour,

Avec SQL-Query Analyser interactif, je peux rediriger le résultat d'une
requête vers un fichier, mais n'est-ce pas possible grâce à une
instruction
dans le script, avec effet à partir de et jusqu'à certaines requêtes ?

Je sais que c'est possible pour un traitement lancé par l'agent
SQL-Servermais cela ne convient pas, car c'est pour l'ensemble du job.

Merci de votre aide.

Cordialement