समस्यासमस्याएं रुक-रुक कर विसंगतियों को समझने जब SSIS पैकेज
पारित कर दिया कुछ महीनों में नीचे वर्णित प्रक्रिया बिना किसी समस्या के काम किया है के दौरान साथ डेटा लोड हो रहा बार यह समाप्त हो गया है की एक विशाल बहुमत (2008 R2 पर)। हालांकि, हमने गलत तरीके से जुड़े डेटा के तीन उदाहरण हैं। सवाल यह है कि, इसका कारण क्या है और मैं इसका समाधान कैसे करूं?
DATA_PreImp
sourceid col01 col02 col03 col04 col...
100001 John Smith
100002 Calvin Klein
100003 Peter Parker
100004 Moe Greene
आमतौर पर प्रदान की गई नतीजा यह है कि विशेषता सही ढंग से लेकिन कभी कभी Items_Main से जुड़ा है (1% से कम) क्रम ताकि col01 के मूल्य के मूल्य के रूप में ही Items_Main से जुड़ा नहीं है अव्यवस्थित है शेष कॉलम।
इसके कारण होने वाली किसी भी अंतर्दृष्टि की सराहना की जाएगी।
डेटा प्रक्रिया
चलती हम एक SSIS पैकेज है कि एक फ्लैट तालिका (आधारित विशेषता) तीन संबंधित टेबल से मिलकर संरचना करने के लिए कहा जाता है DATA_PreImp से डेटा स्थानांतरित करता है।
- Items_Main चाहिए DATA_PreImp में हर पंक्ति में एक पंक्ति है
- Items_Featurevalues DATA_PreImp में एक पंक्ति के प्रत्येक स्तंभ मान के लिए एक पंक्ति में शामिल है
- Items_MainRel Items_Main और Items_FeatureValues
के बीच संबंध होता है एसएसआईएस पैकेज में पहला कदम डेटाटाइन से डेटा DATA_PreImp से सम्मिलित करता है और जेनरेट पहचानकर्ता को TARGET_ID कॉलम में खाली DATA_PreImpMappingTMP तालिका में सम्मिलित करता है।
insert into items_main(creationdate, status)
output inserted.itemid into DATA_PreImpMappingTMP(TARGET_ID)
select getdate(), '0' from data_preimp
order by sourceid asc;
SSIS पैकेज में दूसरे चरण के लिए (मूल रूप से Itemid) TARGET_ID साथ Items_MainRel मेज और सुविधा के लिए एक पहचानकर्ता (इस मामले में एक 5 में) भरें।
insert into items_mainrel(itemid, featureid)
output inserted.itemrelid into DATA_PreImpMapping2TMP(INDREL_ID)
select TARGET_ID, 5 from DATA_PreImpMappingTMP
order by TARGET_ID asc;
तीसरे चरण DATA_PreImp से SOURCE_ID साथ DATA_PreImpMapping2TMP तालिका में SOURCE_ID कॉलम भरने के लिए है।
with cte as (select sourceid, row_number() over (order by sourceid asc) as row from data_preimp)
update m set m.SOURCE_ID = s.sourceid, m.FEAT_ID = 5
from DATA_PreImpMapping2TMP as m
join cte as s on s.row = m.ROW;
अंतिम चरण DATA_PreImpMapping2TMP और DATA_PreImp से डेटा के साथ Items_FeatureValues तालिका भरने के लिए है।
insert into items_featurevalues(itemrelid, languageid, fnvarchar)
select DATA_PreImpMapping2TMP.INDREL_ID, 0, data_preimp.col01
from DATA_PreImpMapping2TMP
join data_preimp on (DATA_PreImpMapping2TMP.SOURCE_ID = data_preimp.sourceid)
where FEAT_ID = 5
डेटा तालिका संरचना
यहाँ परिदृश्य बनाने के लिए आवश्यक है:
CREATE TABLE [dbo].[DATA_PreImp](
[sourceid] [bigint] IDENTITY(1,1) NOT NULL,
[col01] [nvarchar](500) NULL,
[col02] [nvarchar](500) NULL,
[col03] [nvarchar](500) NULL,
[col04] [nvarchar](500) NULL,
[col05] [nvarchar](500) NULL,
[col06] [nvarchar](500) NULL,
[col07] [nvarchar](500) NULL,
[col08] [nvarchar](500) NULL,
[col09] [nvarchar](500) NULL,
[col10] [nvarchar](500) NULL,
CONSTRAINT [PK_DATA_PreImp] PRIMARY KEY CLUSTERED
(
[sourceid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[DATA_PreImpMappingTMP](
[ROW] [int] IDENTITY(1,1) NOT NULL,
[TARGET_ID] [int] NULL,
PRIMARY KEY CLUSTERED
(
[ROW] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Items_Main](
[Itemid] [int] IDENTITY(1,1) NOT NULL,
[creationDate] [smalldatetime] NOT NULL,
[status] [int] NOT NULL,
[purchdate] [smalldatetime] NULL,
[logindate] [smalldatetime] NULL,
CONSTRAINT [PK_Items_Main] PRIMARY KEY CLUSTERED
(
[Itemid] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[DATA_PreImpMapping2TMP](
[ROW] [int] IDENTITY(1,1) NOT NULL,
[SOURCE_ID] [int] NULL,
[INDREL_ID] [int] NULL,
[FEAT_ID] [int] NULL,
PRIMARY KEY CLUSTERED
(
[ROW] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[Items_Features](
[featureId] [int] IDENTITY(1,1) NOT NULL,
[featureRef] [varchar](15) NOT NULL,
[featureName] [varchar](50) NOT NULL,
[creationDate] [smalldatetime] NOT NULL,
[status] [int] NOT NULL,
[fieldType] [varchar](50) NOT NULL,
[featureType] [int] NOT NULL,
[featureDesc] [varchar](500) NULL,
CONSTRAINT [PK_Items_Features] PRIMARY KEY CLUSTERED
(
[featureId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
CREATE TABLE [dbo].[Items_MainRel](
[ItemRelId] [int] IDENTITY(1,1) NOT NULL,
[Itemid] [int] NOT NULL,
[featureId] [int] NOT NULL,
CONSTRAINT [PK_Items_MainRel] PRIMARY KEY CLUSTERED
(
[ItemRelId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Items_FeatureValues](
[valueId] [int] IDENTITY(1,1) NOT NULL,
[ItemRelId] [int] NOT NULL,
[languageId] [int] NOT NULL,
[FnVarChar] [nvarchar](250) NULL,
[FInt] [int] NULL,
[FImage] [int] NULL,
[FNText] [ntext] NULL,
[FSmallDateTime] [smalldatetime] NULL,
CONSTRAINT [PK_Items_FeatureValues] PRIMARY KEY CLUSTERED
(
[valueId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[Items_MainRel] WITH CHECK ADD CONSTRAINT [FK_Items_MainRel_Items_Features] FOREIGN KEY([featureId])
REFERENCES [dbo].[Items_Features] ([featureId])
GO
ALTER TABLE [dbo].[Items_MainRel] CHECK CONSTRAINT [FK_Items_MainRel_Items_Features]
GO
ALTER TABLE [dbo].[Items_MainRel] WITH CHECK ADD CONSTRAINT [FK_Items_MainRel_Items_Main] FOREIGN KEY([Itemid])
REFERENCES [dbo].[Items_Main] ([Itemid])
GO
ALTER TABLE [dbo].[Items_MainRel] CHECK CONSTRAINT [FK_Items_MainRel_Items_Main]
GO
ALTER TABLE [dbo].[Items_FeatureValues] WITH CHECK ADD CONSTRAINT [FK_Items_FeatureValues_Items_MainRel] FOREIGN KEY([ItemRelId])
REFERENCES [dbo].[Items_MainRel] ([ItemRelId])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[Items_FeatureValues] CHECK CONSTRAINT [FK_Items_FeatureValues_Items_MainRel]
GO
INSERT INTO DATA_PreImp (col01,col02,col03,col04)
VALUES('John', 'Smith', '1964', 'NewYork'),
('Calvin', 'Klein', '1960', 'Washington D. C.'),
('Peter', 'Parker', '1974', 'Losangles'),
('Moe', 'Greene', '1928', 'Lasvegas')
INSERT INTO Items_Features (featureRef, featureName, creationDate, [status], fieldType, featureType, featureDesc)
VALUES ('firstname','First_Name', GETDATE(), 0, 'FnVarChar', 3, 'FirstName'),
('lastname','Last_Name', GETDATE(), 0, 'FnVarChar', 3, 'LastName'),
('Birth','Birth', GETDATE(), 0, 'FnVarChar', 3, 'Birth'),
('City','City', GETDATE(), 0, 'FnVarChar', 3, 'City')
मुझे दूसरी लिपि पर विदेशी कुंजी उल्लंघन मिलता है। डीबीओ में कोई रिकॉर्ड नहीं है।Feature_Features सुविधा आईडी = 5 (जैसा कि उस स्क्रिप्ट में हार्ड-कोड किया गया है)। क्या यह स्क्रिप्ट में इस्तेमाल किया जाने वाला एक अलग फीचर आईडी होना चाहिए या क्या dbo.Items_Features से एक रिकॉर्ड गायब है? – Aphillippe
क्या आप अपने आवेषण में लेनदेन का उपयोग कर रहे हैं? एसएसआईएस पैकेज में त्रुटि प्रबंधन किसी भी उपयोगी डेटा फेंक देता है? क्या एक ही समय में एक ही डीबी/टेबल पर चल रही अन्य प्रक्रियाएं हैं जो समवर्ती मुद्दों का कारण बन सकती हैं? – Valkyrie
इस जटिल के साथ, वास्तविक पैकेज और सभी आंतरिक कार्यों के बिना, समस्या का पता लगाने के लिए यह काफी चुनौतीपूर्ण होगा। हमें और अधिक जानकारी चाहिए .... – mrkb80