Bonjour,

Je dois migrer une application de SQL Server 2000 vers SQL Server 2008. Et je rencontre un problème de mise à jour sur une vue.

La vue est la suivante:

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
 
SELECT     dbo.PFUCSEXE.EXENCE, dbo.PFUCSVMB.VMBRPR, CASE WHEN PRONOM IS NULL 
                      THEN '** Promoteur non affecté **' ELSE PRONOM END AS PRONOM, CASE WHEN PRODES IS NULL THEN '*****' ELSE PRODES END AS PRODES, 
                      CASE WHEN PROTEL IS NULL THEN '*****' ELSE PROTEL END AS PROTEL, CASE WHEN PROFAX IS NULL 
                      THEN '*****' ELSE PROFAX END AS PROFAX, dbo.PFUCSCLI.CLICLI, dbo.PFUCSCLI.CLINOM, dbo.PFUCSVMB.VMBVMB, dbo.PFUCSVMB.VMBRGA, 
                      dbo.PFUCSVMB.VMBNOM, dbo.PFUCSVMB.VMBISI, dbo.PFUCSEXE.EXEQTE, dbo.PFUCSEXE.EXEBOR, dbo.PFUCSBOR.BORDSA, 
                      dbo.PFUCSBOR.BOROPS, dbo.PFUCSBOR.BORSER, dbo.PFUCSVMB.VMBOPR, dbo.PFUCSBOR.BORORI, dbo.PFUCSEXE.EXEMHF, 
                      dbo.PFUCSEXE.EXEFRA, dbo.PFUCSEXE.EXEMFC, dbo.PFUCSEXE.EXESEN, dbo.PFUCSEXE.EXECRS, dbo.PFUCSEXE.EXEDHC, 
                      dbo.PFUCSEXE.EXETMT, dbo.PFUCSVMB.VMBDIV, dbo.PFUCSEXE.EXEPFS, dbo.PFUCSEXE.EXEMSA, dbo.PFUCSEXE.EXEDSA, 
                      dbo.PFUCSEXE.EXERAC, dbo.PFUCSEXE.EXEDTE, dbo.PFUCSEXE.EXEIJG, dbo.PFUCSBOR.BORINT, dbo.PFUCSEXE.EXENJG, 
                      dbo.PFUCSBOR.BORTYP, dbo.PFUCSEXE.EXEVUS, dbo.PFUCSEXE.EXETYP, dbo.PFUCSEXE.EXEOPV, dbo.PFUCSEXE.EXECLE, 
                      dbo.PFUCSBOR.BORRAC, dbo.PFUCSVMB.VMBLHR, dbo.PFUCSREX.REXRAC, dbo.PFUCSVMB.VMBCOP
FROM         dbo.PFUCSEXE INNER JOIN
                      dbo.PFUCSVMB ON dbo.PFUCSEXE.EXEVMB = dbo.PFUCSVMB.VMBVMB LEFT OUTER JOIN
                      dbo.PFUCSPRO ON dbo.PFUCSVMB.VMBRPR = dbo.PFUCSPRO.PROPRO INNER JOIN
                      dbo.PFUCSBOR ON dbo.PFUCSEXE.EXEBOR = dbo.PFUCSBOR.BORRAC AND dbo.PFUCSEXE.EXESER = dbo.PFUCSBOR.BORSER INNER JOIN
                      dbo.PFUCSCLI ON dbo.PFUCSBOR.BORCLI = dbo.PFUCSCLI.CLICLI LEFT OUTER JOIN
                      dbo.PFUCSREX ON dbo.PFUCSEXE.EXEVMB = dbo.PFUCSREX.REXRAC
WHERE     (dbo.PFUCSREX.REXTYP = 'JGB')
et je fais un Update comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
UPDATE VUCSCEND 
SET EXEIJG='1', EXENJG=77271
WHERE EXENCE=0
	AND convert(varchar,BORDSA,112)<='2009-08-07'
	AND convert(varchar,EXEDTE,112)<='2009-08-07'
	AND BORSER = 'BOM'
	AND EXETYP = 'NOR'
	AND EXEVUS = '1'
	AND EXEIJG = '0'
si j'exécute cette instruction, je me prends le message suivant:
Msg 4147, Level 15, State 1, Procedure VUCSCEND, Line 20
The query uses non-ANSI outer join operators ("*=" or "=*"). To run this query without modification, please set the compatibility level for current database to 80, using the SET COMPATIBILITY_LEVEL option of ALTER DATABASE. It is strongly recommended to rewrite the query using ANSI outer join operators (LEFT OUTER JOIN, RIGHT OUTER JOIN). In the future versions of SQL Server, non-ANSI join operators will not be supported even in backward-compatibility modes.

Msg 4413, Level 16, State 1, Line 1
Could not use view or function 'VUCSCEND' because of binding errors.

J'utilise déjà des left et des inner join, je ne sais pas quoi faire pour résoudre mon problème?
Des suggestions ?

Merci d'avance ?

Mic