Ошибка SQL Server: «Не удается использовать пустые имена объектов или столбцов» - PullRequest
1 голос
/ 11 мая 2009

Я получаю следующую ошибку:

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 ]

1 голос
/ 11 мая 2009

Вы, кажется, используете имя из 3 частей, часть которого пуста, т.е.

0 голосов
/ 13 мая 2009

Я думаю, вам нужно установить схему для использования Subsonic. В этой теме, кажется, есть некоторая информация:

Дозвуковой - Как использовать имя схемы SQL / владельца в качестве части пространства имен?

0 голосов
/ 13 мая 2009

Я не знаком с SubSonic, но вы пробовали более простой запрос для проверки правильности синтаксиса? Этот запрос вообще работает в SQL Server (Management Studio / Query Analyzer)?

Глядя на это с точки зрения 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;
0 голосов
/ 11 мая 2009

Похоже, что текст запроса строится с пустой схемой таблицы.

Эти пустые квадратные скобки [] должны содержать что-то вроде "dbo", чтобы сделать запрос синтаксически верным. Я не знаю достаточно о SubSonic, чтобы дать вам пример кода.

...