Nom d'objet non valide erreur lorsque vous essayez d'exécuter la procédure stockée?
Pas sûr de ce que l'affaire est que j'ai de la procédure stockée nommée exactement ce que j'appelle cependant il me donne toujours cet objet non valide erreur. Voici le code de connexion, l'erreur est levée sur la deuxième à la dernière ligne.
SqlConnection cnstr = new SqlConnection(ConfigurationManager.ConnectionStrings["darconn"].ConnectionString);
SqlCommand sqlcmd = new SqlCommand();
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Connection = cnstr;
sqlcmd.CommandText = "SetMapping";
String[] pullKodID = bundlelist.SelectedValue.ToString().Split(':');
int kod_id = System.Convert.ToInt32(pullKodID[0]);
sqlcmd.Parameters.Add("@kod_id", kod_id);
sqlcmd.Parameters.Add("@ell_id", courselist.Items[i].Text);
cnstr.Open();
sqlcmd.ExecuteNonQuery();
cnstr.Close();
peut-être que cela aide les stackoverflow.com/questions/9419710/...
OriginalL'auteur MetaGuru | 2009-05-15
Vous devez vous connecter pour publier un commentaire.
Le plus probable de la procédure stockée n'est pas visible de votre code, car il a été créé/détenue par un utilisateur autre que
dbo
ou de l'utilisateur spécifié dans la chaîne de connexion.Avez-vous essayé en préfixant le nom de la procédure stockée avec
dbo
? Par exemple "dbo.SetMapping".À défaut, Gestion de l'utilisation des Studio/Enterprise Manager pour savoir qui détient la procédure stockée et soit de le recréer comme
dbo
ou de mettre à jour votre code/chaîne de connexion à utiliser l'utilisateur approprié.OriginalL'auteur LukeH
J'ai eu le même problème et il s'est avéré que j'ai créé la procédure stockée dans la [master] base de données au lieu de celui que j'étais censé travailler. Probablement pas votre problème, mais c'est quelque chose à prendre note de.
OriginalL'auteur Captain Kenpachi
du générateur de profils sql montrer quoi que ce soit?
pouvez-vous exécuter en dehors du contexte de l'application? de mgt studio ou req analyseur?
OriginalL'auteur Josh
Vérifiez l'orthographe du nom de la table(s) dans la procédure stockée.
Lors de l'enregistrement d'une procédure stockée, il vérifie les noms des champs dans les tables utilisées, mais il est possible de sauvegarder une procédure stockée qui utilise un nom de table qui n'existe pas (ou est mal orthographié).
OriginalL'auteur Guffa
Vérifier la procédure stockée pour voir si elle est détenue par 'dbo' ainsi, le nom serait " dbo.SetMapping "et non pas comme quelque chose de" SomeUser.SetMapping'
Je voudrais également spécifier explicitement le "dbo." dans le nom
OriginalL'auteur Jon Erickson
Êtes-vous absolument sûr que vous avez entré le nom correctement?
OriginalL'auteur HLGEM
Celui-ci est un long shot, mais les réponses sont déjà dans la liste.
Rarement un script peut obtenir un nom différent dans le catalogue que dans le script. Je crois que cela pourrait causer des problèmes similaires à ce que vous voyez.
Le script suivant va vérifier votre base de données pour voir si il y a des articles de votre catalogue qui ne correspondent pas avec le script. (Vous devez disposer de SQL 2005 ou plus pour que cela fonctionne)
(Comme une note de côté, si vous voulez voir toutes les erreurs dans votre base de données ajouter cette après la
if (ERROR_PROCEDURE() <> @ObjectName)
bloc.)Larson essayer de mon outil de checktsql ou utiliser le code sur mon blog devio.wordpress.com/2010/05/28/checking-ms-sql-server-objects
OriginalL'auteur Vaccano
Est la base de données à l'aide d'un classement sensible à la casse? Si tel est le cas dans votre code C# le même que le cas dans la base de données?
OriginalL'auteur GilaMonster
Quel est le nom de l'objet réel qu'il se plaint ? J'ai vu le même problème dans une procédure stockée et en fait il n'y a pas de problème avec la procédure stockée en soi, mais en raison d'une faute de frappe, le nom d'une table utilisée dans la procédure stockée a été mauvais (le nom de la procédure stockée a accidentellement été collé dans le nom de la table), afin de lui remettre le nom d'Objet non Valide erreur qui correspond au nom de la procédure stockée, ce qui était très déroutant.
Essayez de changer le nom de la procédure stockée et de l'appeler à nouveau à partir de votre code et de voir ce qui se passe - ou essayez d'exécuter la procédure stockée directement dans SQL Management Studio.
Si cela ne fonctionne pas alors être très méthodique, diviser pour régner - aller directement à l'essentiel et de tout vérifier à nouveau de bout en bout. Est la chaîne de connexion correcte, ce qui est la base de données la connexion à au moment de l'exécution, ce que l'id d'utilisateur, la procédure stockée dans Sql management studio sur son propre etc
Espère que ça aide.
OriginalL'auteur Chris
Pour ce que ça vaut, j'ai eu un tout autre problème .NET 4 qui a produit le même exception, avec peu d'informations utiles pour le diagnostic.
J'ai mis à jour plusieurs tables dans ma DBML. J'ai peut-être re-charger une procédure stockée, mais je ne me souviens pas de le faire.
J'ai été laissé avec la suite de la procédure stockée wrapper dans le concepteur.cs:
CreateMethodCallQuery
est prévu pour l'appel de fonctions de table, plutôt que de procédures stockées. Je suis perplexe quant à pourquoi il aurait changé cela. J'ai été rétrocédés à utiliserExecuteMethodCall
:Et tout est bien. Très étrange.
Mise à JOUR: Il semble avoir été causé par Visual Studio décider d'une procédure stockée est une fonction table lorsqu'il est ajouté à la dbml. Je n'ai jamais vu cela se produire avant.
La "IsComposable" drapeau semble être la seule façon dont il fait la distinction entre les procédures stockées et de la table de valeurs de fonctions. Une fois que j'ai franchi le drapeau à partir de la Fonction de nœud dans le dbml, Visual Studio a généré de corriger le code dans le fichier de concepteur.
OriginalL'auteur jkade
Assurez-vous d'abord que vos procédures stockées en fait de travailler à l'extérieur .net. Si elle fonctionnait très bien, puis envisager la suite...
Cette erreur peut être trompeur si l'objet référencé fonctionne bien, à vérifier d'autres procédures stockées que vous utilisez sur la même page pour les invalides des références à l '"objet"
La raison, il est peut-être la référence à une ERREUR SQL à l'intérieur d'un complètement séparée de cassé procédure stockée que vous êtes en cours d'exécution sur la même page. Par exemple, disons que vous avez une procédure stockée pour obtenir le contenu d'un tableau; si, par erreur, vous rejoignez une table procédure stockée(plutôt que sur la table de la procédure stockée a été référencement) dans une autre procédure stockée sur la même page, alors cette erreur sera levée. Ce qui peut être source de confusion, puisque vous savez que la procédure stockée référencé fonctionne très bien!
OriginalL'auteur DaneEdw
J'ai eu le mauvais nom de la table à l'intérieur de la procédure, ce qui explique pourquoi j'ai été faire cette erreur.
Exemple: Il y a une table nommée
test2
dans une procédure, avec des champs de la tabletest
. Il ressemblait à:insert into test2 (fields from test) values
...OriginalL'auteur user3162968
j'ai eu le même problème.
j'ai oublié d'écrire le chemin complet vers le mon réel de la base de données.
si u ont à écrire sélectionnez *à Partir de [votre nom de base de données].[dbo].[nom de l'objet]
dans mon cas, en a été un objet de la table dans la pratique de la base de données nommée
donc,sélectionnez *à partir de [pratique].[dbo].[l'employé]
la même logique s'applique pour les procédures stockées ainsi
OriginalL'auteur Manish Sakariya
J'ai aussi eu la même erreur se produisant à chaque fois que j'ai essayé d'insérer des données dans une table SQL à l'aide de ADO.Net .
Plus tard, j'ai découvert un trigger sur la table de la prévention de cela,quand j'ai essayé d'exécuter la même commande dans SQL server directement. Vérifiez donc que trop.
OriginalL'auteur Amrita K