2016-04-21 4 views
0

Je suis en train de (synthétiquement) remplir une table de dimension temporelle vide dans un datamart étoiles modélisé, après quoi il devrait ressembler à ceci:temps de chargement dimension table t-sql

enter image description here

J'utilise le code T-SQL suivant pour ceci:

/* 
STEP 3 
Populate DIM_TIJD table with date and its derrived values data 
*/ 
USE Fuzzy_DM_Robin 
--DECLARE DATE VARIABLES FOR DATE PERIOD 
DECLARE @StartDate datetime = '01/01/1995' 
DECLARE @EndDate datetime = '01/01/2026' 
DECLARE @DateInProcess datetime 
SET @DateInProcess  = @StartDate 
WHILE @DateInProcess < = @EndDate 
BEGIN 
    SET NOCOUNT ON 
--LOOP THROUGH INDIVIDUAL DATES DEFINED BY TIME PERIOD 
     INSERT INTO DIM_TIJD (
     [DATUM_ID], 
     [DATUM], 
     [DAG_VD_WEEK], 
     [WEEKNR], 
     [MAAND], 
     [MAAND_OMSCHRIJVING], 
     [LAATSTE_DAG_MAAND], 
     [KWARTAAL], 
     [JAAR] 
     ) 
     VALUES (
     CAST (@DateInProcess AS numeric (10)), 
     @DateInProcess, 
     CONVERT(varchar(10), @DateInProcess, 110) + ', ' + DATENAME(WEEKDAY, @DateInProcess), 
     DATEPART (wk, @DateInProcess), 
     MONTH(@DateInProcess), 
     CAST(YEAR(@DateInProcess) as varchar(4)) + ' - ' + DATENAME(MONTH, @DateInProcess), 
     DATEPART (dd, EOMONTH (@DateInProcess)), 
     DATENAME(QUARTER, @DateInProcess), 
     YEAR(@DateInProcess)) 
END 

Néanmoins, il ne se chargera pas. Les messages que je reçois sont:

Message 1:

String or binary data would be truncated

et le message 2:

[Execute SQL Task] Error: Executing the query "/* STEP 3 Populate DIM_TIJD table with date and it..." failed with the following error: "The statement has been terminated.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly."

Qu'est-ce que je fais mal? Il n'y a pas de sous-doublures dans SSMS indiquant que quelque chose ne va pas avec le code et j'ai vérifié que toutes les longueurs varchar sont identiques pour la table et le code. J'ai essayé de jongler avec les paramètres de jeu de résultats, mais cela ne me donne un autre message:

Message 3:

[Execute SQL Task] Error: There is an invalid number of result bindings returned for the ResultSetType: "ResultSetType_SingleRow".

Merci à l'avance!

Répondre

0

La variable @DateInProcess doit être incrémentée dans le cadre de la boucle.

Essayez d'ajouter ceci comme la dernière ligne de la boucle (avant la fin):

SET @DateInProcess = DATEADD(DAY, 1, @DateInProcess) 
+0

Bonjour Chris, merci pour vos commentaires. Malheureusement, cela n'aide pas, le même problème persiste ... des suggestions supplémentaires? –

+0

Je commencerais par vérifier vos colonnes dans le tableau en ce qui concerne leurs types et longueurs de données - est-ce que les données vont s'insérer dans le tableau ou vont-elles être tronquées? Je vous recommande de configurer le scénario avec une variable de table ou de table temporaire et de voir si cela fonctionne. N'hésitez pas à poster le type de table/types de données ici et je vais jeter un coup d'oeil. –