2010-05-18 9 views
0

insérer Ok j'ai donc ce storedproc dans ma base de données SQL 2008 (fonctionne en 2005 aussi/utilisé pour) ...malheurs de procédure stockée ... binaire

CREATE PROCEDURE [dbo].[SetBinaryContent] 
    @Ref nvarchar(50), 
    @Content varbinary(MAX), 
    @ObjectID uniqueidentifier 
AS 
BEGIN 

    DELETE ObjectContent WHERE ObjectId = @ObjectID AND Ref = @Ref 

    IF DATALENGTH(@Content) > 5 
    BEGIN 
     INSERT INTO ObjectContent 
      (Ref,BinaryContent,ObjectId) 
     VALUES 
      (@Ref,@Content,@ObjectId) 
    END 

    UPDATE Objects SET [Status] = 1 
    WHERE ID = @ObjectID 
END 

Je prends relativement simple, un tableau d'octets en C# et le chuck @Content je lui donne alors un guid et une chaîne pour les autres paramètres et nous partons.

...

Grand, il travaillait ... mais il ne le font pas plus ... si euh ... Quel est le problème avec ce proc stocké? J'ai traversé mon code C# en pensant que je me suis foutu d'une façon ou d'une autre, mais il ajoute définitivement les params et leur donne les valeurs correctes, alors qu'est-ce qui ferait que le serveur arrête d'exécuter correctement cette procédure stockée?

Lorsqu'il est appelé, ce proc s'exécute mais rien ne change dans la base de données ... aucun nouvel enregistrement n'est ajouté à la table ObjectContent.

Bizarre hein ...

+1

Est-ce que cela fonctionne si vous appelez manuellement ce SP dans SSMS? A-t-il déjà fonctionné dans SQL2008 ou l'a-t-il arrêté dès que vous avez essayé de passer à SQL2008? –

+2

Je dois demander l'évidence: Est-ce que 'DATALENGTH (@Content)' renvoie une valeur supérieure à 5? –

+0

Comment est-ce que j'appellerais ceci manuellement dans SSMS? ... Je demande seulement parce que je ne suis pas sûr comment définir une valeur pour un paramètre binaire. Oh et oui ... la longueur de données est certainement supérieure à 5. Le champ en question stocke des choses comme le contenu de l'image, donc je vérifie tout ce genre de chose avant d'appeler le proc dans mon code C#. – War

Répondre

3

vous exécutez Profiler avez pour voir exactement ce qui est envoyé à SQL Server?

Avez-vous essayé d'exécuter manuellement la procédure stockée en utilisant les valeurs fournies par Profiler?

+0

I cat exécuter profiler parce que la base de données en question est sur un service hébergé et je ne suis pas dans le rôle sys admins (donc il dit). Les tests sur ma machine locale semblent fonctionner correctement. Je ne reçois aucune erreur sur la machine distante, elle tombe simplement. – War

+0

Probablement une question stupide mais ... Des idées comment je pourrais obtenir des informations de type profileur sans utiliser profiler? – War

0

HLGEM ...

Je vais vous donner cela parce que si je pouvais utiliser profileur il aurait montré le correctif réel. Essentiellement, j'ai creusé un peu plus profond dans mon code et j'ai trouvé que j'avais en fait été une pléb ... J'ai plusieurs chaînes de connexion dans mon fichier de configuration et en quelque sorte je prenais le mauvais, donc ça fonctionnait parfaitement ... juste sur le db usé.

Je suis désolé de perdre le temps.

Ne pas je me sens maintenant muet ...

Je vous voté en trop ... Jeez je suis un muppet !!