Nome do objeto inválido SQL 'Endereço'
-
24-09-2019 - |
Pergunta
Estou recebendo o erro acima no meu método VS 2008 C# quando tento invocar o procedimento armazenado SQL GetColumnNames de vs. Este SP aceita um parâmetro de entrada, o nome da tabela e funciona com sucesso a partir do SSMS. Atualmente, estou selecionando a tabela AdventureWorks Endereço para puxar os nomes das colunas desta tabela. Eu posso ver a tabela AventureWorks disponível no VS no meu servidor Explorer / Data Connection. E vejo a tabela de endereços e o getColumnNames SP aparecendo no Server Explorer.
Mas ainda estou recebendo esse erro listado acima. Aqui está o snippet de código C# que eu uso para executar isso:
public static datatable displayTableColumns (string tt) {sqldatareader dr = null; String tableName = tt; String Connstring = "Fonte de dados =.; AnextDBFilename = " C: Arquivos de Programas Microsoft SQL Server msSql10.mssqlserver mssql data Adventureworks_data.mdf "; catalog inicial = aventura; 30; instância do usuário = false "; string errorMsg; SqlConnection Conn2 = novo 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 eu examino o errorMsg, diz o seguinte:
" at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)\r\n
em system.data.sqlclient.sqlinernalConnection.onerror (exceção do SQLEXCECTION, BOOLEAN BreakConnection) r n
em system.data.sqlclient.tdsparser.throwexceptionAndWarning (TDSPARSERSTATEOBJECT STADOBJ) r n
em system.data.sqlclient.tdsparser.run (runbehavior runbehavior, sqlcommand cmdhandler, sqldatarader datastream, mantelkcopysimpleResultset stelandler, tdsparserstatebjectobj)
em system.data.sqlclient.sqldataReader.consumemetadata () r n
em system.data.sqlclient.sqldataReader.get_metadata () r n
em system.data.sqlclient.sqlCommand.finishishExecuteReader (sqldatareader ds, runbehavior runbehavior, reseção de stringstring) r n n
em system.data.sqlclient.sqlCommand.Runexectedereadertds (CommandBeHavior cmdBeHavior, RunBehavior RunBehavior, Boolean ReturnStream, Boolean Async) r n
em system.data.sqlclient.sqlCommand.RunexecheteReader (CommandBeHavior cmdBeHavior, RunBeHavior RunBeHavior, Boolean ReturnStream, Método String, Dbasyncresult Result) r n N
em system.data.sqlclient.sqlCommand.RunexectecheReader (CommandBeHavior cmdBeHavior, RunBeHavior RunBeHavior, Boolean ReturnStream, String Method) r n n
em system.data.sqlclient.sqlCommand.execheteReader (comportamento CommandBeHavior, método de string) r n em system.data.sqlclient.sqlCommand.execectereader () r n
em adonet_namespace.adonet_methods.displaytableColumns (string tt) em c: documentos e configurações admin my documents visual studio 2008 Projects addFileToSql addFileTosql adonet métodos.c: linha 35 "
Onde a linha 35 é
dr = cmd.executerEader ();
Solução
Eu rapidamente verifiquei o AdventureWorks Database e vejo que a tabela "endereço" pertence ao esquema "pessoa". Tente passar "Person.addressType" como o valor do valor do parâmetro de comando no código.