Meilleur auteur de réponses
Utilisation des vues partitionnées

Question
-
Bonjour,
J'essaie désespérément d'utiliser des vues partitionnées pour mettre à jour des tables relativement massives.
Pour alléger les problématiques de backup, j'ai splitté mes tables sur 2 bases distinctes.
J'ai construit mes tables comme suit:
USE [BASE_003_SI] GO create table TEST2( champ1 varchar(10), champ2 varchar(10), champ3 varchar(10), champ4 varchar(10), champ5 varchar(10), CONSTRAINT [PK_TEST2_15] PRIMARY KEY ( champ1 ASC, champ5 ASC ) ) ALTER TABLE [dbo].[TEST2] WITH NOCHECK ADD CONSTRAINT [CHK_2_TEST2] CHECK (([champ5]='2')) GO ALTER TABLE [dbo].[TEST2] CHECK CONSTRAINT [CHK_2_TEST2] GO USE [BASE_004_SI] GO create table TEST3( champ1 varchar(10), champ2 varchar(10), champ3 varchar(10), champ4 varchar(10), champ5 varchar(10), CONSTRAINT [PK_TEST3_15] PRIMARY KEY ( champ1 ASC, champ5 ASC ) ) ALTER TABLE TEST3 WITH NOCHECK ADD CONSTRAINT [CHK_3_TEST3] CHECK (([champ5]='3')) GO ALTER TABLE TEST3 CHECK CONSTRAINT [CHK_3_TEST3] GO USE [BASE_002_SI] GO create view TESTVW AS SELECT * FROM BASE_003_SI.dbo.TEST2 UNION ALL SELECT * FROM BASE_004_SI.dbo.TEST3
Lorsque j'essaie d'insérer une ligne dans ma vue:
INSERT
INTO TESTVW VALUES ('2','2','2','2','2')
Il me renvoie l'erreur
UNION ALL view 'BASE_002_SI.dbo.TESTVW' is not updatable because a partitioning column was not found.
Pourtant, il me semblait que c'était fait pour.
Pourriez-vous m'assister? Merci d'avance
sOnO
Réponses
-
Bonsoir,
Il faut utiliser les triggers sur votre vue avec INSTEAD OF dans ce cas.
++
MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1- Proposé comme réponse Roxana PANAITMicrosoft employee lundi 12 juillet 2010 12:27
- Marqué comme réponse Roxana PANAITMicrosoft employee jeudi 15 juillet 2010 06:54
-
Bonjour,
Je suis tout à fait d'accord avec mikedavem concernant la fait qu'il manque le déclencheur INSTEAD OF sur la vue; par contre je me permet de vous poser la question suivante :
Pourquoi ne pas utiliser le partitionnement SQL au lieu des vue partitionnée, (oubliez cette question si votre serveur est antérieur à SQL 2005)
Cdt
J.K- Marqué comme réponse Roxana PANAITMicrosoft employee jeudi 15 juillet 2010 06:54
Toutes les réponses
-
Bonsoir,
Il faut utiliser les triggers sur votre vue avec INSTEAD OF dans ce cas.
++
MCDBA | MCITP SQL Server 2005 / SQL Server 2008 | LPI Linux 1- Proposé comme réponse Roxana PANAITMicrosoft employee lundi 12 juillet 2010 12:27
- Marqué comme réponse Roxana PANAITMicrosoft employee jeudi 15 juillet 2010 06:54
-
Bonjour,
Je suis tout à fait d'accord avec mikedavem concernant la fait qu'il manque le déclencheur INSTEAD OF sur la vue; par contre je me permet de vous poser la question suivante :
Pourquoi ne pas utiliser le partitionnement SQL au lieu des vue partitionnée, (oubliez cette question si votre serveur est antérieur à SQL 2005)
Cdt
J.K- Marqué comme réponse Roxana PANAITMicrosoft employee jeudi 15 juillet 2010 06:54