Bonjour,

J'ai besoin de transférer les données qui ont été modifiées durant une période de la journée sur une autre base de donnée via des fichiers xml.

J'ai réussi à le faire pour des tables déterminées. Je veux le faire pour l'ensemble des tables de ma bd. Je n'arrive pas à passer convenablement les paramètres. Pouvez-vous m'aider ?

Voici l'exemple de mon script :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
use SIMASS_Journaliere
set language us_english 
SET NOCOUNT ON 
DECLARE @FileName VARCHAR(50) 
DECLARE @SQLCmd VARCHAR(2048) 
DECLARE @cmd NVARCHAR(2048) 
DECLARE @tableName NVARCHAR(2048) 
DECLARE @outPath NVARCHAR(2048) 
SET @outPath = 'D:\Temp\Fichiers_Journaliers_test\'
DECLARE tableCursor CURSOR FOR 
SELECT [name] FROM sysobjects WHERE type='U' 
FOR READ ONLY 
OPEN tableCursor 
FETCH NEXT FROM tableCursor INTO @tableName
print @tableName
WHILE @@FETCH_STATUS = 0 
BEGIN 
   if ( (DATEPART(hour, getdate()) >= 06) AND (DATEPART(hour, getdate()) < 12))
     begin 
	insert into "BD_Periodes_journee.dbo." + @tableName
	SELECT * FROM  "Journaliere.dbo." + @tableName 
	  WHERE (DATEPART(day, _DateMiseAjour)) = (DATEPART(day, getdate()))    and  (DATEPART(hour, _DateMiseAjour) >= 06) AND (DATEPART(hour, _DateMiseAjour) < 12)			
	SELECT @FileName = '_12h.XML' 
	SELECT @SQLCmd = 'bcp ' +  db_name() + '..' + @tableName + ' FOR XML PATH(''''), ROOT(''Table''), TYPE, ' + ' out ' + @outPath + @tableName + @FileName + ' -w -T' 
	EXECUTE master..xp_cmdshell @SQLCmd	
    end
    FETCH NEXT FROM tableCursor INTO @tableName
END
CLOSE tableCursor;
DEALLOCATE tableCursor
 
truncate table BD_Periodes_journee.dbo.salle
truncate table BD_Periodes_journee.dbo.campus

Merci!