SQL 无效的对象名称“地址类型”
Posted
技术标签:
【中文标题】SQL 无效的对象名称“地址类型”【英文标题】:SQL Invalid Object Name 'AddressType' 【发布时间】:2011-02-05 01:06:37 【问题描述】:当我尝试从 VS 调用 SQL getColumnNames 存储过程时,我在 VS 2008 C# 方法中遇到上述错误。该 SP 接受一个输入参数,即表名,并在 SSMS 中成功运行。目前我正在选择 AdventureWorks AddressType 表,以便从该表中提取列名。我可以从我的服务器资源管理器/数据连接中看到 VS 中可用的 AdventureWorks 表。我在服务器资源管理器中看到了 AddressType 表和 getColumnNames SP。
但我仍然收到上面列出的这个错误。这是我用来执行此操作的 C# 代码 sn-p:
public static DataTable DisplayTableColumns(string tt) SqlDataReader dr = null; 字符串表名 = tt; string connString = "Data Source=.;AttachDbFilename=\"C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\AdventureWorks_Data.mdf\";初始目录=AdventureWorks;Integrated Security=True;连接超时= 30;用户实例=假"; 字符串错误消息; 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;
当我检查 errorMsg 时,它会显示以下内容:
" at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)\r\n
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔型 breakConnection)\r\n 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)\r\n 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)\r\n 在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData()\r\n 在 System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,RunBehavior runBehavior,字符串 resetOptionsString)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream,布尔异步)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔 returnStream,String 方法,DbAsyncResult 结果)\r\n 在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String 方法)\r\n 在 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,字符串方法)\r\n 在 System.Data.SqlClient.SqlCommand.ExecuteReader()\r\n 在 C:\Documents and Settings\Admin\My Documents\Visual Studio 2008\Projects\AddFileToSQL\AddFileToSQL\ADONET methods.cs:line 35 中的 ADONET_namespace.ADONET_methods.DisplayTableColumns(String tt)"
第 35 行在哪里
dr = cmd.ExecuteReader();
【问题讨论】:
【参考方案1】:我迅速检查了 AdventureWorks 数据库,发现“AddressType”表属于“Person”模式。尝试将“Person.AddressType”作为代码中命令参数的值传递。
【讨论】:
伟大的收获,Ashish!这就是问题所在!以上是关于SQL 无效的对象名称“地址类型”的主要内容,如果未能解决你的问题,请参考以下文章
与 sql server 2014 的无效对象名称 jdbc 连接