2010-10-04 3 views
1

J'ai un cas étrange où lorsque je regarde les données à travers mes scripts SQL j'ai une valeur, mais si je regarde les données directement SELECT * FROM table j'obtiens une autre valeur. J'ai d'abord pensé à renifler les paramètres, mais cela n'a pas résolu le problème. Je ne fais rien avec la valeur à portée de main, sauf l'obtenir avec une procédure stockée.Comment les données peuvent varier en fonction de comment je les vois

Exemple de la procédure stockée.

CREER exemple PROCEDURE
(
@iRefProjectID int
)
AS
- Empêcher renifler Paramètre
DECLARE @projectID int
SET @projectID = @iRefProjectID

SELECT iEntryType 
FROM table 
WHERE iEntryType IN (1,5,6) 
AND iProjectID = @projectID 
RETURN 

GO

Maintenant, une des lignes ainsi extraites contient un '2', que lorsque je le regarde à travers le SP c'est un '1'. Il n'aurait pas dû être choisi du tout étant 2! = 1 || 5 || 6. Soudain le 2 devient 1 et ensuite "1" == 1.

Où devrais-je chercher à tuer ce bug.

Les lignes en question
SELECT * FROM table
3264427 2003-11-25 00:00:00.000 **2** Udligning til afregning F83907 100625.00

Exec SP
3264427 2003-11-25 00:00:00.000 -100625.00 Udligning til afregning F83907 **1**

Ahh .. trouvé quelque chose. Cela ressemble plutôt à un bug Join.

+0

Essayez de qualifier complètement la table server.user.table dans la zone select. –

+0

J'ai essayé comme vous l'avez dit - pas de changement. Maintenant, j'ai dbname.dbo.table - même résultat, bien sûr, je l'ai fait à la fois sur le SP et sur mon manuel sélectionner aucun changement de données que je vois. Nous parlons de la même ligne d'identité a 2 valeurs différentes en attente. – DoStuffZ

+0

Le code que vous avez publié n'est donc pas le même que celui que vous utilisez? Je vois aussi que le signe est différent mais vous ne sélectionnez qu'une colonne dans le SP. – gbn

Répondre

2

Il n'y a pas un tel bug.

Vous avez probablement 2 tables avec le même nom dans différents schémas. Exemple: dbo.table et [DOMAIN\User].table

Les meilleures pratiques est toujours objets pour éviter qualifier la résolution de schéma incorrect.

Il existe d'autres options telles que:

  • bases de données différentes
  • différents serveurs
  • tableau
  • est en fait une vue unrefreshed
  • de lecture sale (comme par Yves M. commentaire) parce que vous avez changé niveau d'isolement
+1

La transaction sans commission pourrait être aussi bien ... –

+0

J'ai seulement 1 base de données avec ces données, je regarde seulement sur ma machine de développement et la base de données locale. Les données ont été rafraîchies/restaurées ce matin et non elles ne changent pas pendant la journée. Les données sont mises à jour tous les soirs à partir des systèmes clients. – DoStuffZ

+1

Toujours pas un tel bug. Quelque chose ne va pas avec les objets ou la sécurité si c'est la même db etc. Ne pensez-vous pas que quelqu'un l'aurait déjà remarqué si * était * un bug? – gbn