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 ...
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? –
Je dois demander l'évidence: Est-ce que 'DATALENGTH (@Content)' renvoie une valeur supérieure à 5? –
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