SQL Server错误:“不能使用空对象或列名称”

时间:2009-05-11 07:23:49

标签: asp.net sql-server subsonic

我收到以下错误:

Cannot use empty object or column names. Use a single space if necessary.
Msg 1038, Level 15, State 3, Line 1

,查询命令如下:

SELECT TOP 100 PERCENT
  [].[cms_page].[pa_id], [].[cms_page].[pa_key], 
  [].[cms_page].[pa_title], [].[cms_page].[pa_keywords], 
  [].[cms_page].[pa_description], [].[cms_page].[pa_header], 
  [].[cms_page].[pa_created], [].[cms_page].[pa_modified], 
  [].[cms_page].[pa_language] FROM [cms_page] 
WHERE 
  [cms_page].[pa_key] = @pa_key0 
ORDER BY 
  [pa_id] ASC;
确实很奇怪。为什么会这样?我正在使用SubSonic 2.1。

的ConnectionString:

<add name="OCDB" connectionString="Network Library=DBMSSOCN;Data Source=127.0.0.1,1433;Initial Catalog=test_db;User ID=test;Password=testpwd"/>

编辑:那么解决方案只是简单地生成和重建数据访问层,我很高兴。

4 个答案:

答案 0 :(得分:1)

您似乎使用了3部分名称,其中一部分为空,即'[]。'

答案 1 :(得分:0)

看起来好像是使用空表架构构造查询文本。

那些空的[]方括号应包含类似“dbo”的内容,以使查询在语法上有效。我不太了解SubSonic会给你一个代码示例。

答案 2 :(得分:0)

我不熟悉SubSonic,但您是否尝试过更简单的查询来测试您的语法是否正确?此查询是否在SQL Server(Management Studio /查询分析器)中有效?

从SQL Server的角度来看,你使用的方法太多了。如果我在SQL Server中编写该查询,它看起来更像我在下面写的。我不确定变量@ pa_key0,这个查询是存储过程的一部分还是SunSonic在运行查询时替换了这个变量?

SELECT
  pa_id, 
  pa_key, 
  pa_title, 
  pa_keywords, 
  pa_description,
  pa_header, 
  pa_created,
  pa_modified, 
  pa_language 

FROM 
  cms_page

WHERE 
  pa_key = @pa_key0 

ORDER BY 
  pa_id ASC;

答案 3 :(得分:0)

我认为您需要设置Subsonic的架构才能使用。这个帖子似乎有一些信息:

Subsonic - How to use SQL Schema / Owner name as part of the namespace?