SQL Nome oggetto non valido 'AddressType'
-
24-09-2019 - |
Domanda
Sto ottenendo l'errore precedente nel mio metodo di VS 2008 C # quando provo a invocare le getColumnNames SQL stored procedure da VS. Questo SP accetta un parametro di input, il nome della tabella, e lavora con successo da SSMS. Attualmente sto selezionando la tabella AdventureWorks AddressType per poter tirare i nomi delle colonne da questa tabella. Posso vedere teh tabella AdventureWorks disponibili in VS dalla mia connessione Esplora server / Data. E vedo sia la tabella AddressType e getColumnNames SP mostrando in Esplora server.
Ma ancora sto ottenendo questo errore di cui sopra. Ecco il codice C # frammento che uso per eseguire questo:
DisplayTableColumns DataTable public static (stringa TT) { SqlDataReader dr = null; stringa TableName = tt; stringa CONNSTRING = "origine dati = .; AttachDbFilename = \" C: \ Programmi \ Microsoft SQL Server \ MSSQL10.MSSQLSERVER \ MSSQL \ DATA \ AdventureWorks_Data.mdf \ "; iniziale Catalogo = AdventureWorks; Integrated Security = True; Timeout connessione = 30; User instance = false "; stringa errorMsg; SqlConnection CONN2 = new SqlConnection (CONNSTRING); SqlCommand cmd = conn2.CreateCommand ();
try
{
cmd.CommandText = "dbo.getColumnNames";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn2;
SqlParameter parm = new SqlParameter("@TableName", SqlDbType.VarChar);
parm.Value = TableName;
parm.Direction = ParameterDirection.Input;
cmd.Parameters.Add(parm);
conn2.Open();
dr = cmd.ExecuteReader();
}
catch (Exception ex)
{
errorMsg = ex.Message;
}
E quando esamino l'errorMsg dice il seguente:
" at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)\r\n
a System.Data.SqlClient.SqlInternalConnection.OnError (eccezione SqlException, breakConnection booleano) \ r \ n
a System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (stateObj TdsParserStateObject) \ r \ n
a System.Data.SqlClient.TdsParser.Run (runBehavior RunBehavior, SqlCommand cmdHandler, SqlDataReader datastream, bulkCopyHandler BulkCopySimpleResultSet, stateObj TdsParserStateObject) \ r \ n
a System.Data.SqlClient.SqlDataReader.ConsumeMetaData () \ r \ n
a System.Data.SqlClient.SqlDataReader.get_MetaData () \ r \ n
a System.Data.SqlClient.SqlCommand.FinishExecuteReader (ds SqlDataReader runBehavior runBehavior, String resetOptionsString) \ r \ n
a System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (cmdBehavior CommandBehavior, runBehavior runBehavior, returnStream booleano, booleano asincrona) \ r \ n
a System.Data.SqlClient.SqlCommand.RunExecuteReader (cmdBehavior CommandBehavior, runBehavior RunBehavior, returnStream booleano, il metodo String, risultato DbAsyncResult) \ r \ n
a System.Data.SqlClient.SqlCommand.RunExecuteReader (cmdBehavior CommandBehavior, runBehavior RunBehavior, returnStream booleano, il metodo String) \ r \ n
a System.Data.SqlClient.SqlCommand.ExecuteReader (comportamento CommandBehavior, metodo String) \ r \ n al System.Data.SqlClient.SqlCommand.ExecuteReader () \ r \ n
a ADONET_namespace.ADONET_methods.DisplayTableColumns (String TT) in C: \ Documents and Settings \ Admin \ Documenti \ Visual Studio 2008 \ Projects \ AddFileToSQL \ AddFileToSQL \ Adonet methods.cs: linea 35"
Dove linea 35 è
dr = cmd.ExecuteReader ();
Soluzione
Ho subito controllato database AdventureWorks e vedere che la tabella "AddressType" appartiene allo schema "Persona". Prova a passare "Person.AddressType" come valore del valore del parametro di comando nel codice.