Ошибка открытия бд недопустимое имя столбца name queryname qrguests

Добрый день!
Подскажите, может кто сталкивался с подобной проблемой.
После обновление Орион про с версии 1.12.2 д о версии 1.20.3 не запускается АБД , следующая ошибка : «Ошибка открытия БД: Недопустимое имя столбца»RecRoomID» , QueryName = «qrGuest»»»
Реиндексацю производил — не помогло.
УРВ — работает
Монитор оперативной задачи работает, (пишет кто подключился(пользователь)) но разделы и схемы и приборы отсутствуют.
В ядре оперативной задачи отсутствуют порты с приборами. 

1 год 5 месяцев назад

avatar

Яцко Вячеслав Владимирович

16

#ссылка

1 ответ

Открываете Управление Сервером. БД, в списке находите пункт под названием Модернизация базы данных из версии 1.20.., после этой процедуры все откроется.

1 год 5 месяцев назад

avatar

Тремасов Константин Александрович

5355

#ссылка

Добавить ответ

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

ЗАДАН

1 год 5 месяцев назад

По каждому вопросу/ответу можно добавлять комментарии. Комментарии предназначены для уточнения вопроса/ответа.

Добрый день!
Подскажите, может кто сталкивался с подобной проблемой.
После обновление Орион про с версии 1.12.2 д о версии 1.20.3 не запускается АБД , следующая ошибка : «Ошибка открытия БД: Недопустимое имя столбца»RecRoomID» , QueryName = «qrGuest»»»
Реиндексацю производил — не помогло.
УРВ — работает
Монитор оперативной задачи работает, (пишет кто подключился(пользователь)) но разделы и схемы и приборы отсутствуют.
В ядре оперативной задачи отсутствуют порты с приборами. 

1 год назад

avatar

Яцко Вячеслав Владимирович

14

#ссылка

1 ответ

Открываете Управление Сервером. БД, в списке находите пункт под названием Модернизация базы данных из версии 1.20.., после этой процедуры все откроется.

1 год назад

avatar

Тремасов Константин Александрович

5289

#ссылка

Добавить ответ

Для добавления сообщений на форуме вам необходимо зарегистрироваться и указать мобильный телефон в своем профиле (зачем?)

По каждому вопросу/ответу можно добавлять комментарии. Комментарии предназначены для уточнения вопроса/ответа.

FORUM_NAME: АРМ Орион Про версии до 1.20
Описание: АРМ «Орион Про» — пакет программного обеспечения для аппаратно-программного комплекса ИСО «Орион», на котором реализуются системы охранной сигнализации, контроля и управления доступом, охранного видеонаблюдения, автоматика противопожарных систем, сопряженные с инженерными системами объектов.
Справочная информация, руководства для АРМ Орион Про версии до 1.20
Модератор: Модераторы

cancerman
Автор темы
cancerman
Автор темы
Возраст: 53
Репутация: 0
Сообщения: 5
Зарегистрирован: 06.02.2012
С нами: 10 лет 11 месяцев
Профессия:

Господа, этот вопрос уже поднимался, но решения так никто и не предложил.
При попытке запуска АБД из оболочки вылезает гадское окно Ошибка открытия БД: qrPhoneRelations: бла-бла-бла. Как отмечалось ранее это происходит из-за того что АБД и Орион ПРО имеют разные версии. Возникают вопросы
1 как это возможно если АБД и Орион ПРО инсталятся из одного exe файла? вина разработчика?
2 Если все-таки это возможно, то как с этим бороться?

от безысходности был скачан SP5 но не помогло)


Nesk
Nesk
Возраст: 53
Репутация: 0
Сообщения: 43
Зарегистрирован: 13.12.2011
С нами: 11 лет 1 месяц
Профессия:

Непрочитанное сообщение #2 Nesk » 06.02.2012, 15:20

1. Возможно. Т.к. разные версии имеет база и ПО (а не АБД и Про).
2. Модернизируйте просто базу данных с помощью менеджера


cancerman
Автор темы
cancerman
Автор темы
Возраст: 53
Репутация: 0
Сообщения: 5
Зарегистрирован: 06.02.2012
С нами: 10 лет 11 месяцев
Профессия:

Непрочитанное сообщение #3 cancerman » 07.02.2012, 10:18

с SQL столкнулся впервые, не сочтите за труд, подскажите каким макаром происходит модернизация базы данных, и как определить до какого состояния модернизировать чтобы АБД заработал.
заранее спасибо


Nesk
Nesk
Возраст: 53
Репутация: 0
Сообщения: 43
Зарегистрирован: 13.12.2011
С нами: 11 лет 1 месяц
Профессия:

Непрочитанное сообщение #4 Nesk » 07.02.2012, 10:33

Это не очень сложно. Модернизация делается не средствами скл, а с помощью менеджера центрального сервера. Это прошная утилита, в пуске найдёте.
Запускаете её, вводите пароль, в меню выбираете БД — Модернизация-слияния. Оставляете переключатель на пункте модернизация. В этом же мастере можно выбрать, за какие периоды переносить журналы тревог, статистики, событий.
Главное на этапе, когда мастер попросить ввести параметры подключения к БД введите новое имя базы данных. Со старым не модернизирует. Вообще там довольно просто всё.



Sia-Ori
Активный участник
Активный участник
Sia-Ori
Активный участник
Активный участник
Возраст: 53
Репутация: 5
Сообщения: 774
Зарегистрирован: 04.02.2012
С нами: 10 лет 11 месяцев
Профессия: инженер СКУД
Откуда: Ростов на Дону

Непрочитанное сообщение #6 Sia-Ori » 07.02.2012, 14:26

С большой базой событий модернизация не завершалась, выполнялась сутки и всё равно прерывалась. События долой, и тогда всё быстренько.


savedata
savedata
Репутация: 0
Сообщения: 3
Зарегистрирован: 13.06.2012
С нами: 10 лет 7 месяцев
Профессия:

Непрочитанное сообщение #7 savedata » 13.06.2012, 09:54

во общем аналогичная проблема у меня возникла. Поставил орион_про_1.11sp5 и sql_express_2005 на чистую windows 7. при запуске АБД

cancerman писал(а):Ошибка открытия БД: qrPhoneRelations: бла-бла-бла.

Nesk писал(а):1. Возможно. Т.к. разные версии имеет база и ПО (а не АБД и Про).
2. Модернизируйте просто базу данных с помощью менеджера

НЕ ПОМОГЛО! Что можно сделать?


AlexRuden
AlexRuden
Возраст: 45
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 11 лет
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #8 AlexRuden » 13.06.2012, 12:27

savedata писал(а):НЕ ПОМОГЛО! Что можно сделать?

Проверка на ошибки в менеджере нормально проходит?


emashovvn
emashovvn
Репутация: 0
Сообщения: 2
Зарегистрирован: 18.06.2012
С нами: 10 лет 7 месяцев
Профессия:

Непрочитанное сообщение #9 emashovvn » 18.06.2012, 09:28

Та же самая проблема.
Все проверки в «Менеджере центрального сервера» проходят без замечаний, модернизацию тоже провел и не помогло.
Помогите люди добрые:)



AlexRuden
AlexRuden
Возраст: 45
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 11 лет
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #11 AlexRuden » 18.06.2012, 10:29

Мдее, пора бы Болидовцам ввести умную проверку на ключ Гуардант и лицензию prvd.ini …

Курите man‘ы , господа.


savedata
savedata
Репутация: 0
Сообщения: 3
Зарегистрирован: 13.06.2012
С нами: 10 лет 7 месяцев
Профессия:

Непрочитанное сообщение #12 savedata » 22.06.2012, 16:38

У меня все разрешилось, когда я все снес, имя компьютера на латинской раскладке написал и обратно поставил по новой


AlexRuden
AlexRuden
Возраст: 45
Репутация: 0
Сообщения: 1091
Зарегистрирован: 13.01.2012
С нами: 11 лет
Профессия: Наёмник.
Откуда: Россия.

Непрочитанное сообщение #13 AlexRuden » 22.06.2012, 20:41

savedata писал(а):…имя компьютера на латинской раскладке написал…

Распространенная ошибка. Имя компьютера всегда должно быть на англицком и желательно начинаться с буквы, а не с цифры.
Не все программы понимают юникод…

Курите man‘ы , господа.


Hairmonster
Hairmonster
Репутация: 0
Сообщения: 7
Зарегистрирован: 15.08.2012
С нами: 10 лет 5 месяцев
Профессия:

Непрочитанное сообщение #14 Hairmonster » 15.08.2012, 17:58

не понимаю причем тут ключи и prvd… ставил предварительно на три компа с 1 и того же дистриба, все работает, на своем ноуте без ключей и првд работаю, просто для небольших изменений базы вдали от рабместа.. решили поменять железо сервера (с ключами) — на чистой винде абд отказывается запускаться..



Hairmonster
Hairmonster
Репутация: 0
Сообщения: 7
Зарегистрирован: 15.08.2012
С нами: 10 лет 5 месяцев
Профессия:

Непрочитанное сообщение #16 Hairmonster » 17.08.2012, 13:32

Мда, все-таки корни у Ориона шаманские…Все заработало. Возможно помогла активация лицензии при установке с родного диска..Извиняюсь. Просто непонятно, почему без этого обходились тогда предыдущие установки… Сейчас может осенило, что при левом првд ключи находились в портах.. видимо если с запускать с родным(не лиц) prvd.ini, тогда ключи вставлять нельзя (ну не догадались вытащить).


MadHacker M
Активный участник
Активный участник
Аватара
MadHacker M
Активный участник
Активный участник
Возраст: 32
Репутация: 21
Сообщения: 1044
Зарегистрирован: 28.05.2012
С нами: 10 лет 8 месяцев
Профессия: Программист
Откуда: МО г. Королёв

Непрочитанное сообщение #17 MadHacker » 27.08.2012, 08:18

Была проведена проверка.
Данная ошибка (возможны другие названия таблиц) возникает при несоответствии файла prvd.ini и USB ключа. А так же в случае, если АБД запущено больше, чем позволяет лицензия.
При возникновении подобной ошибки первым делом проверяйте количество лицензий на запуск АБД.

В выпуске 1.12 планируется (не могу гарантировать, что будет сделано) сделать нормальные сообщения о закончившихся лицензиях.


MeFiSTo
MeFiSTo
Репутация: 0
Сообщения: 1
Зарегистрирован: 14.09.2012
С нами: 10 лет 4 месяца
Профессия: наладчик

Непрочитанное сообщение #18 MeFiSTo » 14.09.2012, 22:11

Люди, хелп!!!
Та же самая проблема, ничего не помогает:
— модернизация не даёт результата
— подмена не помогает
Система: win7



Sia-Ori
Активный участник
Активный участник
Sia-Ori
Активный участник
Активный участник
Возраст: 53
Репутация: 5
Сообщения: 774
Зарегистрирован: 04.02.2012
С нами: 10 лет 11 месяцев
Профессия: инженер СКУД
Откуда: Ростов на Дону

Непрочитанное сообщение #20 Sia-Ori » 21.11.2012, 08:56

MadHacker писал(а):Посмотрите количество лицензий на запуск АБД.

Вообще странно, что никто до сих под этого не сказал.
Ведь болидовцы таким несколько странным способом сообщают запустившему АБД, что лицензии закончились. Если в системе плачен 1 АБД, запускаешь второй — как раз вот эта ошибка и вылезает.



  • 4
    373

    pet-and
    Перейти к последнему сообщению
    29.09.2021, 06:08
  • 8
    2027

    DruG
    Перейти к последнему сообщению
    11.03.2019, 14:31
  • 12
    3663

    DruG
    Перейти к последнему сообщению
    11.04.2022, 17:54
  • 1
    1291

    google
    Перейти к последнему сообщению
    25.02.2019, 09:17
  • 0
    5

    Zloy_S
    Перейти к последнему сообщению
    Сегодня, 07:09
  • 1
    1441

    MadHacker
    Перейти к последнему сообщению
    11.05.2018, 16:52
  • 0
    2064

    graunf
    Перейти к последнему сообщению
    08.11.2018, 16:30
  • 0
    67

    deadbeat321
    Перейти к последнему сообщению
    16.12.2022, 17:00
  • 3
    445

    DruG
    Перейти к последнему сообщению
    21.12.2021, 17:31
  • 1
    552

    DruG
    Перейти к последнему сообщению
    12.05.2020, 06:36

Вернуться в «АРМ Орион Про версии до 1.20»

I suspect that you have two tables with the same name. One is owned by the schema ‘dbo’ (dbo.PerfDiag), and the other is owned by the default schema of the account used to connect to SQL Server (something like userid.PerfDiag).

When you have an unqualified reference to a schema object (such as a table) — one not qualified by schema name — the object reference must be resolved. Name resolution occurs by searching in the following sequence for an object of the appropriate type (table) with the specified name. The name resolves to the first match:

  • Under the default schema of the user.
  • Under the schema ‘dbo’.

The unqualified reference is bound to the first match in the above sequence.

As a general recommended practice, one should always qualify references to schema objects, for performance reasons:

  • An unqualified reference may invalidate a cached execution plan for the stored procedure or query, since the schema to which the reference was bound may change depending on the credentials executing the stored procedure or query. This results in recompilation of the query/stored procedure, a performance hit. Recompilations cause compile locks to be taken out, blocking others from accessing the needed resource(s).

  • Name resolution slows down query execution as two probes must be made to resolve to the likely version of the object (that owned by ‘dbo’). This is the usual case. The only time a single probe will resolve the name is if the current user owns an object of the specified name and type.

[Edited to further note]

The other possibilities are (in no particular order):

  • You aren’t connected to the database you think you are.
  • You aren’t connected to the SQL Server instance you think you are.

Double check your connect strings and ensure that they explicitly specify the SQL Server instance name and the database name.

I suspect that you have two tables with the same name. One is owned by the schema ‘dbo’ (dbo.PerfDiag), and the other is owned by the default schema of the account used to connect to SQL Server (something like userid.PerfDiag).

When you have an unqualified reference to a schema object (such as a table) — one not qualified by schema name — the object reference must be resolved. Name resolution occurs by searching in the following sequence for an object of the appropriate type (table) with the specified name. The name resolves to the first match:

  • Under the default schema of the user.
  • Under the schema ‘dbo’.

The unqualified reference is bound to the first match in the above sequence.

As a general recommended practice, one should always qualify references to schema objects, for performance reasons:

  • An unqualified reference may invalidate a cached execution plan for the stored procedure or query, since the schema to which the reference was bound may change depending on the credentials executing the stored procedure or query. This results in recompilation of the query/stored procedure, a performance hit. Recompilations cause compile locks to be taken out, blocking others from accessing the needed resource(s).

  • Name resolution slows down query execution as two probes must be made to resolve to the likely version of the object (that owned by ‘dbo’). This is the usual case. The only time a single probe will resolve the name is if the current user owns an object of the specified name and type.

[Edited to further note]

The other possibilities are (in no particular order):

  • You aren’t connected to the database you think you are.
  • You aren’t connected to the SQL Server instance you think you are.

Double check your connect strings and ensure that they explicitly specify the SQL Server instance name and the database name.

Имеется форма для добавления новой группы (скриншоты прилагаются чуть ниже). При нажатии на кнопку сохранения, происходит сохранение данной записи в таблицу tGroup (успешно). После сохранения, из tGroup должен браться id (первичный ключ) этой группы и передаваться в другую таблицу (вот тут и происходит ошибка в sql запросе).

void LoadIdGroup(string name)
        {
            adapter = new SqlDataAdapter("SELECT ID_Group from tGroups where sName="+name, connection);
            dtGroup = new DataTable();
            adapter.Fill(dtGroup);
            bsGroup = new BindingSource();
            bsGroup.DataSource = dtGroup;
        }
private void saveBtn_Click(object sender, EventArgs e)
    {
        connection.Open();
        SqlCommand commandInsert = new SqlCommand("INSERT INTO [tGroups]" +
            " VALUES(@Name, @Count)", connection);
        commandInsert.Parameters.AddWithValue("@Name", tbName.Text);
        commandInsert.Parameters.AddWithValue("@Count", tbCount.Text);
        commandInsert.ExecuteNonQuery();
        connection.Close();
        connection.Open();

        SqlCommand commandInsertRoutes = new SqlCommand("INSERT INTO [tGroupsRoutes]" +
        " VALUES (@ID_Group, @ID_Route)", connection);
         commandInsertRoutes.Parameters.AddWithValue("@ID_Route", Convert.ToInt32(cbRoutes.SelectedValue));
        LoadIdGroup(tbName.Text);
        commandInsertRoutes.Parameters.AddWithValue("@ID_Group", Convert.ToInt32(((DataRowView)this.bsGroup.Current).Row["ID_Group"]));
        commandInsertRoutes.ExecuteNonQuery();
        connection.Close();
        this.Dispose();
    }

введите сюда описание изображения
введите сюда описание изображения

YFKoenigsegg

1 / 1 / 0

Регистрация: 06.10.2018

Сообщений: 160

1

Недопустимое имя столбца

19.02.2020, 14:48. Показов 8951. Ответов 8

Метки нет (Все метки)


Добрый день. Использую Entity Framework при сохранении пользователя в БД:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
      private void picSignUp_Click(object sender, EventArgs e)
        {
            using (var db = new DB())
            {
                var user = new UserClient()
                {
                    Name = fldName.Text,
                    Surname = fldSurname.Text,
                    PassportNumber = fldPassportNumber.Text,
                    UserLogin = fldLoginUp.Text,
                    Password = fldPasswordUp.Text,
                    Email = fldEmail.Text,
                    RegistrationDate = DateTime.Now.ToString()
                };
                db.UserClients.Add(user);
                db.SaveChanges();
 
 
            }
        }

Но вот в строке

C#
1
db.SaveChanges();

выбрасывается исключение, которое гласит, что «Недопустимое имя столбца Id». Подскажите пожалуйста, как пофиксить.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

bite

3264 / 2852 / 659

Регистрация: 13.04.2015

Сообщений: 6,732

19.02.2020, 14:58

2

Цитата
Сообщение от YFKoenigsegg
Посмотреть сообщение

Подскажите пожалуйста, как пофиксить.

Понятно как — ввести допустимое имя столбца.
Может символы какие недопустимые, может длина превышена, вам лучше знать.

0

602 / 369 / 132

Регистрация: 06.03.2017

Сообщений: 1,365

19.02.2020, 15:01

3

Было бы неплохо глянуть на саму бд. А так только гадать. Ну и не видно, где передается парамет для Id

0

YFKoenigsegg

1 / 1 / 0

Регистрация: 06.10.2018

Сообщений: 160

19.02.2020, 16:00

 [ТС]

4

А параметр Id я не передаю, тк он используется в качестве автоинкремента при добавлении новой записи в БД.
Вот таблица:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
USE [ClientsDB]
GO
 
CREATE TABLE [dbo].[UserClients](
    [UserLogin] [VARCHAR](25) NOT NULL,
    [Password] [VARCHAR](25) NOT NULL,
    [PassportNumber] [VARCHAR](9) NOT NULL,
    [Name] [nvarchar](20) NOT NULL,
    [Surname] [nvarchar](25) NOT NULL,
    [Email] [VARCHAR](40) NOT NULL,
    [RegistrationDate] [VARCHAR](20) NOT NULL,
    UserId INT IDENTITY(1,1)
)
GO
 
ALTER TABLE [dbo].[UserClients] ADD  CONSTRAINT [DF_UserClients_RegistrationDate]  DEFAULT (getdate()) FOR [RegistrationDate]
GO
 
ALTER TABLE UserClients
ADD CONSTRAINT DF_UserClients_UserLogin_Unique UNIQUE (UserLogin)
GO
 
ALTER TABLE UserClients
ADD CONSTRAINT DF_UserClients_Email_Unique UNIQUE (Email)
GO
 
ALTER TABLE UserClients
ADD CONSTRAINT DF_UserClients_UserId PRIMARY KEY CLUSTERED (UserId)
GO

0

796 / 579 / 207

Регистрация: 21.02.2019

Сообщений: 2,095

19.02.2020, 16:35

5

YFKoenigsegg,
а в самом классе UserClient поле Id присутствует?

0

YFKoenigsegg

1 / 1 / 0

Регистрация: 06.10.2018

Сообщений: 160

19.02.2020, 18:54

 [ТС]

6

Да, в этом классе это поле есть(его там я поставил с той целью, чтобы потом получить Id из базы данных — а надо ли создавать прямо целое поля для этого или надо без него?), а если я убираю
это получается другая совсем ошибка которая также мне не известна:

C#
1
2
BankService.UserClient: : EntityType 'UserClient' has no key defined. Define the key for this EntityType.
UserClients: EntityType: EntitySet 'UserClients' is based on type 'UserClient' that has no keys defined.

Код класса UserClient:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 class UserClient
    {
        //public int Id { get; set; }
        public string UserLogin { get; set; }
        public string Password
        {
            set { }
        }
        public string PassportNumber { get; set; }
        public string Name { get; set; }
        public string Surname { get; set; }
        public string Email{ get; set; }
        public string RegistrationDate { get; set; }
    }

Добавлено через 1 час 30 минут
Решил проблему.Добавил следующее:

C#
1
2
 [Key]
        public string UserLogin { get; set; }

и подключил:

C#
1
using System.ComponentModel.DataAnnotations;

и убрал вовсе полe Id

0

Эксперт .NET

11045 / 7601 / 1176

Регистрация: 21.01.2016

Сообщений: 28,582

20.02.2020, 06:53

7

Цитата
Сообщение от YFKoenigsegg
Посмотреть сообщение

Решил проблему.Добавил следующее:

Это дичь. Для ключа нужно использовать отдельное поле с INT или GUID. UserId INT IDENTITY(1,1) PRIMARY KEY — самое правильное решение во всех смыслах.

3

YFKoenigsegg

1 / 1 / 0

Регистрация: 06.10.2018

Сообщений: 160

20.02.2020, 19:33

 [ТС]

8

Всё, переделал.
Поле Id должно называться так же, как и имя столбца(то есть UserId):

C#
1
public int UserId { get; set; }

0

Эксперт .NET

11045 / 7601 / 1176

Регистрация: 21.01.2016

Сообщений: 28,582

21.02.2020, 01:54

9

Цитата
Сообщение от YFKoenigsegg
Посмотреть сообщение

Поле Id должно называться так же, как и имя столбца(то есть UserId):

Не обязательно. Этот момент настраивается.

0



Я работаю над изменением существующей хранимой процедуры SQL Server. Я добавил два новых столбца в таблицу и также изменил хранимую процедуру, чтобы выбрать эти два столбца. Хотя столбцы доступны в таблице SQL Server продолжает давать эту ошибку:

недопустимое имя столбца ‘INCL_GSTAMOUNT’

enter image description here

может кто-нибудь пожалуйста, скажите мне, что тут не так?


1432  


9  

9 ответов:

всякий раз, когда это происходит со мной, я нажимаю Ctrl+ Shift+R обновления intellisense, закройте окно запроса (сохранить при необходимости), а затем запустите новый сеанс, который обычно работает довольно хорошо.

также может произойти, если положить строку в двойные кавычки вместо одинарных.

Intellisense не обновляется автоматически, и вы не должны полностью полагаться на это

эта ошибка также может возникать в инкапсулированных инструкциях SQL, например

объявить @tableName nvarchar (20) SET @tableName = ‘GROC’

объявить @updtStmt nvarchar (4000)

SET @updtStmt = ‘Update tbProductMaster_’ [email protected] + ‘ SET
department_str = ‘ + @tableName exec sp_executesql @updtStmt

только чтобы обнаружить, что отсутствуют цитаты для инкапсуляции параметра «@tableName » далее, как следующее:

SET @updtStmt = ‘Update tbProductMaster_’ [email protected] + ‘ SET
department_str = «‘ + @tableName+»»

спасибо

я получаю ту же ошибку при создании представления.

представьте себе запрос select, который выполняется без проблем:

select id
from products

попытка создать представление из того же запроса приведет к ошибке:

create view app.foobar as
select id
from products

Msg 207, Уровень 16, состояние 1, процедура foobar, строка 2
Недопустимое имя столбца «id».

для меня это оказалось проблемой области видимости; обратите внимание, что представление создается в другой схеме. Указание схема из products таблица решила проблему. То есть.. используя просто products.

с обновить таблицу или закрыть и открыть sql server эта работа

У меня была похожая проблема.

проблема заключалась в том, что в таблице был триггер, который записывал изменения в таблицу журнала аудита. В таблице журнала аудита отсутствовали столбцы.

следующая процедура помогла мне решить эту проблему, но я не знаю, почему.

  1. вырезать код, о котором идет речь, заданный строками в сообщении
  2. сохраните запрос (например, в файл)
  3. вставьте код туда, где он был раньше
  4. снова сохраните запрос

даже если это, кажется, тот же запрос, выполняющий его не бросил эту ошибку

Я просто попробовал.
Если вы выполните инструкцию для создания локальной таблицы, инструмент примет, что это имя столбца существует.
Просто отметьте оператор генерации таблицы в окне редактора и нажмите кнопку Выполнить.

У меня есть довольно большой запрос, который я запускаю в определенной базе данных. Что делает этот запрос, так это выбирает определенные столбцы из определенных таблиц и выгружает их в новую таблицу. Новая таблица используется и изменяется позже в запросе.

Проблема, с которой я сталкиваюсь, заключается в том, что, хотя базы данных предположительно принадлежат одной и той же программе, одна база данных может иметь столбцы email1, email2 и email3, а следующая может иметь только email1. Поскольку email1-3 используются как часть оператора select, когда один из этих столбцов отсутствует, эта часть завершается ошибкой, и таблица никогда не создается.

Я все еще очень новичок в этом, поэтому мой вопрос может быть простым или глупым, но есть ли способ сохранить результаты, когда такой столбец отсутствует? Я мог бы так же легко просто удалить столбцы, отсутствующие в запросе, и запустить его снова, но мне интересно, есть ли более правильный способ сделать это?

Пример:

SELECT  Customer.[Name], 
    Customer.AcctKey, 
    SUBSTRING(Customer.LastName,1,25) AS [Last Name], 
    SUBSTRING(Customer.FirstName,1,25) AS [First Name], 
    Customer.Add1 AS Address, 
    Customer.Add2 AS Address2, 
    Customer.City, 
    Customer.State,                 
    Customer.Zip, 
    Location.Add1 AS [Ship Address], 
    Location.Add2 AS [Ship Address2], 
    Location.City AS [Ship City], 
    Location.State AS [Ship State], 
    Location.Zip AS [Ship Zip], 
    Customer.Phone1 AS Phone, 
    Customer.Phone2 AS [Alt Phone],
    Customer.Phone3 AS [Cell Phone],
    Customer.Phone4 AS Fax, 
    Customer.lblPhone1, 
    Customer.lblPhone2, 
    Customer.lblPhone3, 
    Customer.lblPhone4, 
    Customer.Terms, 
    Customer.[Key] AS [Account Number], 
    Location.Notes, 
    Location.TaxCode AS [Tax Item], 
    Location.Zone AS [Map Code], 
    Location.Contact, 
    Location.Email, 
    Location.Email6, --Fails because column(s) Email2-6
    Location.Email5, --don't exist in this database
    Location.Email4, --but they might in another
    Location.Email3, --and I'd like to get the data
    Location.Email2, --if they do
    Location.Phone6, 
    Location.Phone5

INTO [01Parents]
FROM Customer 
INNER JOIN Location ON Customer.[Key] = Location.[Key]

Всякий раз, когда я отправляю свою форму, он дает мне код ошибки:

«Недопустимое имя столбца» для всех событийспециалиста, телефона, телефона2 и т.д. и @SPECIALIST, @CUST_PHONE, @CUST_PHONE2 и т.д.

Вот мой код ниже, возможно, я не правильно пишу инструкцию SQL или параметры? Те, у которых @infront, есть то, что в моей базе данных, а другие строчные — мои текстовые поля. Я относительно новичок в этом типе кодирования.

Изменить: Изменено мое выражение INSERT INTO на то, что было предложено. Ошибка все еще сохраняется, но сводится к минимуму до

«Недопустимое имя столбца eventpecialist, Недопустимое имя столбца телефона, Недопустимое имя столбца phone2 и т.д.»

private void execution(string eventspecialist, string phone, string phone2, string firstname, string lastname, string besttime, string companyname, string nonprofit, string requesteddate, string requestedtime, string attendance, string eventtype, string other, string leadsource, string notes, string catering, string bar, string damagedeposit, string dancefloor, string griddate, string gridnotes, string comments)
{
    SqlConnection conn = new SqlConnection(GetConnectionString());

    string sql = "INSERT INTO tblcontacts (@SPECIALIST, @CUST_PHONE1, @CUST_PHONE2, @CUST_FNAME, @CUST_LNAME, @BEST_TIME, @COMPANY_NAME, @NONPROFIT, @REQ_DATE, @REQ_TIME, @ATTENDANCE, @EVENT_TYPE, @OTHER_DESC, @LEAD_SOURCE, @NOTES, @CATERING, @BAR, @DAMAGE_DEPOSIT, @DANCE_FLOOR) VALUES (eventspecialist, phone, phone2, firstname, lastname, besttime, companyname, nonprofit, requesteddate, requestedtime, attendance, eventtype, other, leadsource, notes, catering, bar, damagedeposit, dancefloor)";
    string sql2 = "INSERT INTO tblnotes (@NOTEDATE, @NOTEBY, @COMMENTS) VALUES (griddate, gridnotes, comments)";

    try
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(sql, conn);

        cmd.Parameters.Add("@SPECIALIST", SqlDbType.NVarChar, 50).Value = eventspecialist;
        cmd.Parameters.Add("@CUST_PHONE1", SqlDbType.NVarChar, 50).Value = phone;
        cmd.Parameters.Add("@CUST_PHONE2", SqlDbType.NVarChar, 50).Value = phone2;
        cmd.Parameters.Add("@CUST_FNAME", SqlDbType.NVarChar, 50).Value = firstname;
        cmd.Parameters.Add("@CUST_LNAME", SqlDbType.NVarChar, 50).Value = lastname;
        cmd.Parameters.Add("@BEST_TIME", SqlDbType.NVarChar, 50).Value = besttime;
        cmd.Parameters.Add("@COMPANY_NAME", SqlDbType.NVarChar, 225).Value = companyname;
        cmd.Parameters.Add("@NONPROFIT", SqlDbType.NVarChar, 10).Value = nonprofit;
        cmd.Parameters.Add("@REQ_DATE", SqlDbType.Date, 20).Value = requesteddate;
        cmd.Parameters.Add("@REQ_TIME", SqlDbType.Time, 20).Value = requestedtime;
        cmd.Parameters.Add("@ATTENDANCE", SqlDbType.Int, 50).Value = attendance;
        cmd.Parameters.Add("@EVENT_TYPE", SqlDbType.NVarChar, 50).Value = eventtype;
        cmd.Parameters.Add("@OTHER_DESC", SqlDbType.NVarChar, 225).Value = other;
        cmd.Parameters.Add("@LEAD_SOURCE", SqlDbType.NVarChar, 50).Value = leadsource;
        cmd.Parameters.Add("@NOTES", SqlDbType.NVarChar, 225).Value = notes;
        cmd.Parameters.Add("@CATERING", SqlDbType.NVarChar, 1).Value = catering;
        cmd.Parameters.Add("@BAR", SqlDbType.NVarChar, 1).Value = bar;
        cmd.Parameters.Add("@DAMAGE_DEPOSIT", SqlDbType.NVarChar, 19).Value = damagedeposit;
        cmd.Parameters.Add("@DANCE_FLOOR", SqlDbType.Money).Value = Decimal.Parse(dancefloor);


        cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();
    }
    catch (System.Data.SqlClient.SqlException ex_msg)
    {
        string msg = "Error occured while inserting";
        msg += ex_msg.Message;
        throw new Exception(msg);
    }
    finally
    {

        conn.Close();
    }
    try
    {
        conn.Open();
        SqlCommand cmd = new SqlCommand(sql2, conn);

        cmd.Parameters.Add("@NOTEDATE", SqlDbType.Date, 50).Value = griddate;
        cmd.Parameters.Add("@NOTEBY", SqlDbType.NVarChar, 50).Value = gridnotes;
        cmd.Parameters.Add("@COMMENTS", SqlDbType.NVarChar, 50).Value = comments;

        cmd.CommandType = CommandType.Text;
        cmd.ExecuteNonQuery();
    }
    catch (System.Data.SqlClient.SqlException ex_msg)
    {
        string msg = "Error occured while inserting";
        msg += ex_msg.Message;
        throw new Exception(msg);
    }
    finally
    {

        conn.Close();
    }

}
protected void Page_Load(object sender, EventArgs e)
{
    griddate.Text = DateTime.Now.ToString("yyyy/MM/dd");
}
protected void submit_Click(object sender, EventArgs e)
{
    if (requesteddate.Text == "")
    {
        Finish.Text = "Please complete the form!";
    }
    else if (requestedtime.Text == "")
    {
        Finish.Text = "Please complete the form!";
    }
    else if (attendance.Text == "")
    {
        Finish.Text = "Please complete the form!";
    }
    else
    {
        execution(eventspecialist.Text, phone.Text, phone2.Text, firstname.Text, lastname.Text, besttime.SelectedItem.Text, companyname.Text, nonprofit.Text, requesteddate.Text, requestedtime.Text, attendance.Text, eventtype.SelectedItem.Text, other.Text, leadsource.SelectedItem.Text, notes.Text, catering.Text, bar.Text, damagedeposit.Text, dancefloor.SelectedItem.Text, griddate.Text, gridnotes.SelectedItem.Text, comments.Text);
        Finish.Visible = false;
        conform.Visible = true;
    }
}

FORUM_NAME: АРМ Орион Про версии до 1.20
Описание: АРМ «Орион Про» — пакет программного обеспечения для аппаратно-программного комплекса ИСО «Орион», на котором реализуются системы охранной сигнализации, контроля и управления доступом, охранного видеонаблюдения, автоматика противопожарных систем, сопряженные с инженерными системами объектов.
Справочная информация, руководства для АРМ Орион Про версии до 1.20
Модератор: Модераторы

Meytheriym
Автор темы
Meytheriym
Автор темы
Репутация: 0
Сообщения: 23
Зарегистрирован: 20.12.2016
С нами: 6 лет 5 месяцев
Профессия: инженер

Добрый день.
Со вчерашнего дня у диспетчера при запуске ОЗ на экране выскакивает окно Orion Pro: Shell с сообщением: Exception: Недопустимое имя объекта «Comps». Оз не запускается и после этого значок ОЗ становится недоступен.
При запуске АБД выскакивает ошибка с сообщением: Ошибка открытия БД: Недопустимое имя объекта «phone_numbers», QueryName = «qrPhoneIpAddrs»
Подскажите в чем может быть причина?


Warfeer
Warfeer
Репутация: 1
Сообщения: 42
Зарегистрирован: 27.11.2012
С нами: 10 лет 6 месяцев
Профессия: Электромонтер

Непрочитанное сообщение #2 Warfeer » 21.12.2016, 12:56

В БД ошибка. Попробуй запустить проверку и реиндексацию БД из менеджера сервера.


Meytheriym
Автор темы
Meytheriym
Автор темы
Репутация: 0
Сообщения: 23
Зарегистрирован: 20.12.2016
С нами: 6 лет 5 месяцев
Профессия: инженер

Непрочитанное сообщение #3 Meytheriym » 26.12.2016, 10:27

Warfeer писал(а):В БД ошибка. Попробуй запустить проверку и реиндексацию БД из менеджера сервера.

А что делать, если менеджер сервера недоступен (забыли пароль)?


Mixail 51 M
Активный участник
Активный участник
Аватара
Mixail 51 M
Активный участник
Активный участник
Возраст: 42
Репутация: 102
Сообщения: 2810
Зарегистрирован: 21.03.2015
С нами: 8 лет 2 месяца
Профессия: инженер по ПБ
Откуда: г. Мурманск

Непрочитанное сообщение #4 Mixail 51 » 26.12.2016, 18:15

Пароль по умолчанию: 73173100

Не ошибается только тот кто не работает.



EkaterinaIlyina
EkaterinaIlyina
Репутация: 16
Сообщения: 108
Зарегистрирован: 25.05.2016
С нами: 7 лет
Профессия: инженер

Непрочитанное сообщение #6 EkaterinaIlyina » 28.12.2016, 09:27

73173100 — не пароль по умолчанию. А пароль, использующийся в случае, если подключение к базе не настроено или настроено некорректно. Т.е. он подойдёт только если CSO по каким-то причинам настроен на нерабочую базу, например.
Попробуйте самый главный пароль, с которым авторизуетесь в АБД.
Судя по ошибке вы как будто пытаетесь запустить модули с несовместимой базой.
Какие действия выполняли до возникновения ошибки (наверное, «ничего не делали»? :-): )


Meytheriym
Автор темы
Meytheriym
Автор темы
Репутация: 0
Сообщения: 23
Зарегистрирован: 20.12.2016
С нами: 6 лет 5 месяцев
Профессия: инженер

Непрочитанное сообщение #7 Meytheriym » 10.01.2017, 14:42

EkaterinaIlyina писал(а):73173100 — не пароль по умолчанию. А пароль, использующийся в случае, если подключение к базе не настроено или настроено некорректно. Т.е. он подойдёт только если CSO по каким-то причинам настроен на нерабочую базу, например.
Попробуйте самый главный пароль, с которым авторизуетесь в АБД.
Судя по ошибке вы как будто пытаетесь запустить модули с несовместимой базой.
Какие действия выполняли до возникновения ошибки (наверное, «ничего не делали»? :-): )

Пароль от авторизации АДБ не подходит. Пробовал.
Уже разобрались с проблемой. База данных была повреждена. Восстановили.
Спасибо!



  • 5
    5142

    Alex242
    Перейти к последнему сообщению
    25.04.2022, 15:39
  • 0
    356

    deadbeat321
    Перейти к последнему сообщению
    16.12.2022, 17:00
  • 3
    580

    DruG
    Перейти к последнему сообщению
    21.12.2021, 17:31
  • 7
    1065

    DruG
    Перейти к последнему сообщению
    13.01.2020, 19:31
  • 3
    1975

    Svin
    Перейти к последнему сообщению
    04.08.2019, 22:12
  • 9
    2120

    Vse
    Перейти к последнему сообщению
    14.08.2019, 16:04
  • 5
    1178

    DruG
    Перейти к последнему сообщению
    11.05.2021, 15:57
  • 15
    1374

    Ksimma
    Перейти к последнему сообщению
    11.06.2020, 07:10
  • 15
    1738

    DruG
    Перейти к последнему сообщению
    16.11.2019, 17:20
  • 0
    3

    kires17
    Перейти к последнему сообщению
    12.06.2023, 13:18

Вернуться в «АРМ Орион Про версии до 1.20»

I’m trying to perform a SQL query through a linked SSAS server. The initial query works fine:

SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')

But if I try to add:

WHERE "Value" > 0

I get an error

Invalid column name ‘Value’

Any ideas what I might be doing wrong?


So the problem was that the order in which elements of the query are processed are different that the order they are written. According to this source:

http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx

The order of evaluation in MSSQL is:

  1. FROM
  2. ON
  3. JOIN
  4. WHERE
  5. GROUP BY
  6. HAVING
  7. SELECT
  8. ORDER BY

So the alias wasn’t processed until after the WHERE and HAVING clauses.

ConcernedOfTunbridgeWells's user avatar

asked Sep 5, 2008 at 17:26

dmo's user avatar

1

This should work:

SELECT A.Value
FROM (
SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')
) AS a
WHERE a.Value > 0

It’s not that Value is a reserved word, the problem is that it’s a column alias, not the column name. By making it an inline view, «Value» becomes the column name and can then be used in a where clause.

answered Sep 5, 2008 at 17:45

Chris Miller's user avatar

Chris MillerChris Miller

4,7994 gold badges32 silver badges50 bronze badges

You’re using «Value» as a column alias, and I don’t think the alias can appear in the where clause. It’s simply used to name the returned column value. Your where clause should refer to the original column name:

SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')
WHERE "Ugly OLAP name" > 0

answered Sep 5, 2008 at 18:52

Andrew's user avatar

AndrewAndrew

11.9k12 gold badges68 silver badges84 bronze badges

Oh, bummer. I just saw, you select AS FOO. Don’t you need a HAVING claus in this case?

SELECT whatever AS value FROM table HAVING value > 1;

I still would not use «value». But to be sure, look it up in your docs!

answered Sep 5, 2008 at 17:40

Till's user avatar

TillTill

22.2k4 gold badges58 silver badges89 bronze badges

I can vouch for leaving it out of GROUP BY. Good news is, it works just fine being a plain old selected alias.

answered Apr 19, 2012 at 19:09

John Dunagan's user avatar

John DunaganJohn Dunagan

1,4453 gold badges18 silver badges30 bronze badges

Я пытаюсь выполнить SQL-запрос через связанный SSAS-сервер. Исходный запрос работает нормально:

SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')

Но если я попытаюсь добавить:

WHERE "Value" > 0

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

Недопустимое имя столбца «Значение»

Любые идеи, что я могу делать неправильно?


Таким образом, проблема заключалась в том, что порядок, в котором обрабатываются элементы запроса, отличается от порядка их написания. Согласно этому источнику:

http://blogs.x2line.com/al/archive/2007/06/30/3187.aspx

Порядок оценки в MSSQL:

  • С
  • ON
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • SELECT
  • ЗАКАЗАТЬ

Таким образом, псевдоним не обрабатывался до тех пор, пока не будут предложены предложения WHERE и HAVING.

4b9b3361

Ответ 1

Это должно работать:

SELECT A.Value
FROM (
SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')
) AS a
WHERE a.Value > 0

Не это значение является зарезервированным словом, проблема в том, что это псевдоним столбца, а не имя столбца. Сделав это встроенным представлением, значение «Значение» становится именем столбца и затем может использоваться в предложении where.

Ответ 2

Вы используете «Значение» в качестве псевдонима столбца, и я не думаю, что псевдоним может появиться в предложении where. Он просто используется для обозначения возвращаемого значения столбца. Предложение where должно ссылаться на имя исходного столбца:

SELECT "Ugly OLAP name" as "Value" 
FROM OpenQuery( OLAP, 'OLAP Query')
WHERE "Ugly OLAP name" > 0

Ответ 3

О, облом. Я только что видел, вы выбираете AS FOO. Вам не нужен клаус HAVING в этом случае?

SELECT whatever AS value FROM table HAVING value > 1;

Я все равно не буду использовать «значение». Но, конечно, посмотрите в своих документах!

Ответ 4

Я могу поручиться за то, что оставил его вне GROUP BY. Хорошая новость заключается в том, что он отлично работает, будучи простым старым выбранным псевдонимом.

Понравилась статья? Поделить с друзьями:
  • Ошибка открытия бд недопустимое имя объекта relprof
  • Ошибка открытия com порта 4 порт недоступен
  • Ошибка открытия бд недопустимое имя объекта prooms орион про
  • Ошибка открытия com порта 3 порт занят
  • Ошибка открытия usblsafe 3372h bin