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

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

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

avatar

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

16

#ссылка

1 ответ

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

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

avatar

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

5365

#ссылка

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

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

ЗАДАН

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

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

Задача : перенести сервер на новое железо,
Вопрос : как перенести все настройки , базы данных и т.д. на новый сервер?

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

avatar

#ссылка

8 ответов

спасибо пошел перегружать , материться , что бы все заработало

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

avatar

#ссылка

как всегда не получилось сразу , старые сетевые настройки установил ( и имя компа тоже ) , на старом сервере сделал бакап базы правда без ключей, на новом сервере сделал востановление бакапа ,менеджер  попросил сменить имя базы данныч так как база с таким именем существует, сменил.При открытии Администратора Баз Данных выдается ошибка «Ошибка открытия БД:недопустимое имя столбца»operatorID»,QueryName =»QExecute» , куда смотреть еще ?

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

avatar

#ссылка

Спасибо БД модернизировалась и загрузилась ,НО я не вижу приборов , планов , со старого сервера , может я как то не правельно перенес БД со старого сервера на новый

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

avatar

#ссылка

УПС кажется понял, мне дали бакап когда еще не был сконфигурирован орион, наверное , буду разбираться
 

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

avatar

#ссылка

А база открылась, все нормально

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

avatar

#ссылка

еще вопрос , а можно взять файл бд со старого сервера с расширением ****.mdf и его прикрутить серверу

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

avatar

#ссылка

Понятно , буду пробывать, спасибо за ответы

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

avatar

#ссылка

еще вопрос можно, Orion pro SHELL ругается
17.02.2021 13:17:50 | Hint: Соединение с сервером 192.168.10.199
17.02.2021 13:17:53 | Error: Ошибка 12142. Необходимо добавить данное рабочее место в базу данных
17.02.2021 13:20:30 | Error: Ошибка 12142. Необходимо добавить данное рабочее место в базу данных
а как добавить подскажите.

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

avatar

#ссылка

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

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

ЗАДАН

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

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

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


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 6 лет 8 месяцев
Профессия: Инженер

Непрочитанное сообщение #62 Brat_Egora » 23.07.2016, 16:59

Столкнулся с похожей проблемой. Раньше был «Орион», После поменяли на «Орион Про». Всё работало нормально, без ошибок. Спустя два месяца появилась ошибка. При запуске АБД ругается на отсутствие связи. При запуске управления сервером пишет «Не удалось подключиться к серверу», указываю вручную, соединение устанавливается, но никакого результата не даёт. Оболочка системы выдаёт ошибку «Error: Ошибка 201. Невыполнение запроса: рабочие места». Монитор оперативной задачи выдаёт ошибку «Error: Ошибка 1000. Невыполнение запроса информации по всем компьютерам | SELECT ID, Gindex, Name, Psevdonim, TCP_IP, Gtype, Priority, Works, TypeEvents, IpReservSrv FROM Comps ORDER BY Comps.ID».

Безымянный.png

.
Не пойму в чём проблема… :wo_ol: :ps_ih:


Admin M
Администратор
Администратор
Аватара
Admin M
Администратор
Администратор
Возраст: 42
Репутация: 30
Сообщения: 412
Зарегистрирован: 04.06.2012
С нами: 10 лет 7 месяцев
Профессия: в поисках себя
Откуда: респ. Беларусь, г. Минск

Непрочитанное сообщение #63 Admin » 23.07.2016, 18:03

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

Проверяли?

Добавлено спустя 35 минут 49 секунд:

Brat_Egora писал(а):Error: Ошибка 201. Невыполнение запроса: рабочие места

Ошибки в работе «Орион Про» 1.12.2.1 (Пост NKV #10862)


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 6 лет 8 месяцев
Профессия: Инженер

Непрочитанное сообщение #64 Brat_Egora » 24.07.2016, 12:43

Admin,

Там другая ситуация.
У меня не запускается ничего кроме ЦСО. Всё остальное ругается на отсутствие связи.

Спойлер
ЦСО.png
Управление сервером.png
АДМ.png

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

Непрочитанное сообщение #65 Mixail 51 » 24.07.2016, 14:04

А служба SQL сервера то хоть запущена?
IP адрес указан верно?

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


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 6 лет 8 месяцев
Профессия: Инженер

Непрочитанное сообщение #66 Brat_Egora » 24.07.2016, 15:32

Mixail 51,
SQl запущен. Относительно IP адреса, не могу понять где его менять. В целом картина показывает, что нарушена связь. В оболочке системы «Анализ окружения» показывает 1%.
П.с. система работала в течении 7-8 месяцев без сбоев.


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

Непрочитанное сообщение #67 Mixail 51 » 24.07.2016, 15:57

Для начала запустите командную строку и наберите в ней команду «ipconfig» для того что бы узнать реальный IP адрес компьютера.
Затем запустите «Управление сервером» и в меню «Файл►Сервер» замените IP на реальный, если он конечно не правильно прописан.
Также в Управление сервером не будет лишним проверить правильность написания имени сервера, у Вас судя по скриншотам должно быть «USER-PCSQLSERVER2012».
В Оперативной задаче тоже нужно будет поменять IP адрес на реальный, для того что его изменить нужно нажать на зеленый треугольник в правом верхнем углу, рядом к кнопкой ВЫХОД, появится окно в котором нужно будет кликнуть на надпись «Сервер» и ввести пароль 73173100 для смены IP адреса.
Затем нужно будет через АБД добавить данное рабочее место в базу данных.

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

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


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 6 лет 8 месяцев
Профессия: Инженер

Непрочитанное сообщение #68 Brat_Egora » 24.07.2016, 19:04

Приветствую! все сделал как вы написали, и все пошло, запустилось. но компьютер старенький, глюк поймал, пришлось перезагрузить. Теперь снова все по шагово делаю, и не получается, пишет — не удается подключиться к серверу. Мистика… А проблема я так понял в том что программа ранее обращалась на сервер 192.168.1.103, теперь ребята с IT отдела вели какие то работы и наш IP адрес стал 192.168.1.106.


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

Непрочитанное сообщение #69 Mixail 51 » 24.07.2016, 19:09

Так наверное после аварийного завершения работы IP-шники на ….103 вернулись.

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


DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1716
Зарегистрирован: 03.03.2016
С нами: 6 лет 10 месяцев
Профессия: безобразнорабочий

Непрочитанное сообщение #70 DruG » 25.07.2016, 05:01

поди ещё DHCP включен, отключать его нафик и ставить статичный адрес, чтобы ребята из ИТ-отделов случайно не рушили все системы


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 6 лет 8 месяцев
Профессия: Инженер

Непрочитанное сообщение #71 Brat_Egora » 25.07.2016, 15:02

Mixail 51,
Поменял IP в «Управлении Сервером» и «Оперативной задаче», теперь при запуске АБД пишет ошибку соединения с сервером и ссылается на старый IP .
Программа «Монитор» выдаёт ошибку «Error: Ошибка приложения: Недопустимое имя столбца «DokumSeries»» :wo_ol:

DruG,

При отключении DHCP, сеть просто напросто теряется…


DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1716
Зарегистрирован: 03.03.2016
С нами: 6 лет 10 месяцев
Профессия: безобразнорабочий

Непрочитанное сообщение #72 DruG » 25.07.2016, 15:45

Brat_Egora, ну так при отключении, ИП-адрес присваивается какой-нить 168.254… что явно не из вашей сети, т.е. ручками надо нормальный прописать. Или позвать на помощь ребят из ИТ-отдела, они то должны знать что и как делать ;)


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 6 лет 8 месяцев
Профессия: Инженер

Непрочитанное сообщение #73 Brat_Egora » 25.07.2016, 16:06

DruG,
Спасибо! Вопрос с DHCP решен. IP поменял на тот, что был раньше. Спасибо ребятам с IT отдела.
Теперь АБД ругается на «недопустимое имя объекта». Оболочка начала выдавать ошибку «Error: Ошибка 12142. Необходимо добавить данное рабочее место в базу данных». Не пойму где его менять…
Поискал на форуме, ничего толкового не нашёл. Все ключи вставлены и не снимались. Рабочее место находится под видеонаблюдением.




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

Непрочитанное сообщение #76 Mixail 51 » 25.07.2016, 16:56

Открываете АБД►выделяете курсором нужный компьютер с именем►внизу нажимаете на кнопку править►в инспекторе меняем поле TCP/IP►сохранить.

Добавлено спустя 9 минут 1 секунду:
По поводу отсутствия рабочего места в базе забыл написать, выдержка из РЭ на АРМ стр.197:

Чтобы добавить новый объект «Рабочее место», необходимо выбрать в дереве объектов объект
«Система» и нажать кнопку «Добавить» . Затем необходимо ввести значения для всех свойств
нового объекта «Рабочее место» (за исключением свойства «Настройки», которое настраивается
уже после добавления объекта) и нажать кнопку «Сохранить» .

Стоит запомнить, что настройка свойства «Настройки» объекта «Рабочее место» возможна
только после того, как объект добавлен в систему.

Чтобы изменить значения свойств объекта «Рабочее место», нужно выбрать в дереве объектов
необходимый объект и нажать кнопку «Править» . Затем необходимо изменить значения
требуемых свойств объекта и нажать кнопку «Сохранить» .

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




  • 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.

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

Имеется форма для добавления новой группы (скриншоты прилагаются чуть ниже). При нажатии на кнопку сохранения, происходит сохранение данной записи в таблицу 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();
    }

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



Я работаю над изменением существующей хранимой процедуры 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. снова сохраните запрос

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

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

я попал в тупик. У меня есть запрос, который генерируется какой-нибудь C# код. Запрос отлично работает в Microsoft SQL Server Management Studio при запуске с той же базой данных.

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

столбец, о котором идет речь, был недавно добавлен в базу данных. Это столбец даты под названием Incident_Begin_Time_ts .

An например, не является:

select * from PerfDiag 
where Incident_Begin_Time_ts > '2010-01-01 00:00:00';

другие запросы, такие как Select MAX(Incident_Being_Time_ts); сбой при запуске в код, потому что он думает, что столбец отсутствует.

какие идеи?

7 ответов


Я подозреваю, что у вас есть две таблицы с одинаковыми именами. Один принадлежит схеме «dbo» (dbo.PerfDiag), а другой принадлежит схеме по умолчанию учетной записи, используемой для подключения к SQL Server (что-то вроде userid.PerfDiag).

Если у вас есть неквалифицированная ссылка на объект схемы (например, таблица) — не квалифицированная по имени схемы — ссылка на объект должна быть разрешена. Разрешение имен происходит путем поиска объекта соответствующего типа в следующей последовательности (таблица) с указанным именем. Имя разрешается до первого совпадения:

  • по схеме пользователя по умолчанию.
  • по схеме «dbo».

неквалифицированная ссылка привязана к первому матчу в приведенной выше последовательности.

в качестве общей рекомендуемой практики следует всегда квалифицируйте ссылки на объекты схемы по соображениям производительности:

  • неквалифицированная ссылка может аннулировать кэшированный план выполнения хранимой процедуры или запроса, поскольку схема, к которой привязана ссылка, может изменяться в зависимости от учетных данных, выполняющих хранимую процедуру или запрос. Это приводит к перекомпиляции запроса / хранимой процедуры, повышению производительности. Перекомпиляции вызывают блокировку компиляции, которая блокирует доступ других пользователей к необходимым ресурсам.

  • разрешение имен замедляет выполнение запроса, поскольку необходимо выполнить два зондирования разрешите вероятную версию объекта (который принадлежит «dbo»). Это обычный случай. Единственный раз, когда один зонд разрешит имя, если текущий пользователь владеет объектом с указанным именем и типом.

[отредактировано для дальнейшего Примечание]

другие возможности (в определенном порядке):

  • вы не подключены к базе данных вы думаете, что вы.
  • вы не подключены к экземпляру SQL Server, который вы думаете ты.

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



Если вы запускаете это внутри транзакции и оператора SQL, прежде чем это отбрасывает/изменяет таблицу, вы также можете получить это сообщение.


Если вы используете переменные с тем же именем, что и ваш столбец, возможно, вы забыли маркер переменной»@». В инструкции INSERT он будет обнаружен как столбец.


просто была такая же проблема. Я переименовал некоторые псевдонимные столбцы во временную таблицу, которая далее используется другой частью того же кода. По какой-то причине это не было захвачено SQL Server Management Studio, и он жаловался на недопустимые имена столбцов.

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


в конце концов я закрыл и перезапустил Microsoft SQL Server Management Studio; и это исправило его для меня. Но в других случаях достаточно было просто запустить новое окно запроса.


в моем случае я пытался получить значение из неправильного набора результатов при запросе нескольких операторов SQL.


У меня есть база данных в Microsoft SQL Server с таблицей, состоящей из трех столбцов с именами barcode, package и lab. Я пытаюсь обновить поле lab определенного barcode, которое я получил в качестве ввода. Вот что я пробовал:

object[] args = { LabName, currentBarcode };
sql = string.Format("UPDATE BarcodesData SET Lab = {0} WHERE Barcode = {1}", args);
Adapter.UpdateCommand = new SqlCommand(sql, cnn);
Adapter.UpdateCommand.ExecuteNonQuery();

К сожалению, я получаю сообщение об ошибке «Неверное имя столбца». Имя столбца в базе данных — Lab, поэтому я не понимаю, в чем моя ошибка, но считаю, что это как-то связано с оператором обновления.

2 ответа

Лучший ответ

Строковые литералы в SQL обозначаются одинарными кавычками ('). Без них аргументы, которые вы форматируете в строку SQL, будут интерпретироваться как имена столбцов, и вы получите ошибку, поскольку таких столбцов нет.

Вы можете указать значения:

sql = string.Format("UPDATE BarcodesData SET Lab = '{0}' WHERE Barcode = '{1}'", args);
// Here -------------------------------------------^---^-----------------^---^

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

Лучше всего использовать переменные связывания:

sql = "UPDATE BarcodesData SET Lab = @lab WHERE Barcode = @barcode";
Adapter.UpdateCommand = new SqlCommand(sql, cnn);
Adapter.UpdateCommand.Parameters.AddWithValue("@lab", LabName);
Adapter.UpdateCommand.Parameters.AddWithValue("@barcode", currentBarCode);
Adapter.UpdateCommand.ExecuteNonQuery();


3

Mureinik
26 Сен 2020 в 19:43

Вы должны иметь дело с зарезервированным обновлением tablename set [Lab] = 1, где [Barcode] = 1


-1

MrTariqJamil
26 Сен 2020 в 19:39

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


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 7 лет
Профессия: Инженер

Непрочитанное сообщение #62 Brat_Egora » 23.07.2016, 16:59

Столкнулся с похожей проблемой. Раньше был «Орион», После поменяли на «Орион Про». Всё работало нормально, без ошибок. Спустя два месяца появилась ошибка. При запуске АБД ругается на отсутствие связи. При запуске управления сервером пишет «Не удалось подключиться к серверу», указываю вручную, соединение устанавливается, но никакого результата не даёт. Оболочка системы выдаёт ошибку «Error: Ошибка 201. Невыполнение запроса: рабочие места». Монитор оперативной задачи выдаёт ошибку «Error: Ошибка 1000. Невыполнение запроса информации по всем компьютерам | SELECT ID, Gindex, Name, Psevdonim, TCP_IP, Gtype, Priority, Works, TypeEvents, IpReservSrv FROM Comps ORDER BY Comps.ID».

Безымянный.png

.
Не пойму в чём проблема… :wo_ol: :ps_ih:


Admin M
Администратор
Администратор
Аватара
Admin M
Администратор
Администратор
Возраст: 43
Репутация: 30
Сообщения: 412
Зарегистрирован: 04.06.2012
С нами: 11 лет
Профессия: в поисках себя
Откуда: респ. Беларусь, г. Минск

Непрочитанное сообщение #63 Admin » 23.07.2016, 18:03

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

Проверяли?

Добавлено спустя 35 минут 49 секунд:

Brat_Egora писал(а):Error: Ошибка 201. Невыполнение запроса: рабочие места

Ошибки в работе «Орион Про» 1.12.2.1 (Пост NKV #10862)



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

Непрочитанное сообщение #65 Mixail 51 » 24.07.2016, 14:04

А служба SQL сервера то хоть запущена?
IP адрес указан верно?

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


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 7 лет
Профессия: Инженер

Непрочитанное сообщение #66 Brat_Egora » 24.07.2016, 15:32

Mixail 51,
SQl запущен. Относительно IP адреса, не могу понять где его менять. В целом картина показывает, что нарушена связь. В оболочке системы «Анализ окружения» показывает 1%.
П.с. система работала в течении 7-8 месяцев без сбоев.


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

Непрочитанное сообщение #67 Mixail 51 » 24.07.2016, 15:57

Для начала запустите командную строку и наберите в ней команду «ipconfig» для того что бы узнать реальный IP адрес компьютера.
Затем запустите «Управление сервером» и в меню «Файл►Сервер» замените IP на реальный, если он конечно не правильно прописан.
Также в Управление сервером не будет лишним проверить правильность написания имени сервера, у Вас судя по скриншотам должно быть «USER-PCSQLSERVER2012».
В Оперативной задаче тоже нужно будет поменять IP адрес на реальный, для того что его изменить нужно нажать на зеленый треугольник в правом верхнем углу, рядом к кнопкой ВЫХОД, появится окно в котором нужно будет кликнуть на надпись «Сервер» и ввести пароль 73173100 для смены IP адреса.
Затем нужно будет через АБД добавить данное рабочее место в базу данных.

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

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


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 7 лет
Профессия: Инженер

Непрочитанное сообщение #68 Brat_Egora » 24.07.2016, 19:04

Приветствую! все сделал как вы написали, и все пошло, запустилось. но компьютер старенький, глюк поймал, пришлось перезагрузить. Теперь снова все по шагово делаю, и не получается, пишет — не удается подключиться к серверу. Мистика… А проблема я так понял в том что программа ранее обращалась на сервер 192.168.1.103, теперь ребята с IT отдела вели какие то работы и наш IP адрес стал 192.168.1.106.


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

Непрочитанное сообщение #69 Mixail 51 » 24.07.2016, 19:09

Так наверное после аварийного завершения работы IP-шники на ….103 вернулись.

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


DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1716
Зарегистрирован: 03.03.2016
С нами: 7 лет 3 месяца
Профессия: безобразнорабочий

Непрочитанное сообщение #70 DruG » 25.07.2016, 05:01

поди ещё DHCP включен, отключать его нафик и ставить статичный адрес, чтобы ребята из ИТ-отделов случайно не рушили все системы


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 7 лет
Профессия: Инженер

Непрочитанное сообщение #71 Brat_Egora » 25.07.2016, 15:02

Mixail 51,
Поменял IP в «Управлении Сервером» и «Оперативной задаче», теперь при запуске АБД пишет ошибку соединения с сервером и ссылается на старый IP .
Программа «Монитор» выдаёт ошибку «Error: Ошибка приложения: Недопустимое имя столбца «DokumSeries»» :wo_ol:

DruG,

При отключении DHCP, сеть просто напросто теряется…


DruG
Активный участник
Активный участник
DruG
Активный участник
Активный участник
Репутация: 140
Сообщения: 1716
Зарегистрирован: 03.03.2016
С нами: 7 лет 3 месяца
Профессия: безобразнорабочий

Непрочитанное сообщение #72 DruG » 25.07.2016, 15:45

Brat_Egora, ну так при отключении, ИП-адрес присваивается какой-нить 168.254… что явно не из вашей сети, т.е. ручками надо нормальный прописать. Или позвать на помощь ребят из ИТ-отдела, они то должны знать что и как делать ;)


Brat_Egora
Brat_Egora
Репутация: 0
Сообщения: 8
Зарегистрирован: 30.05.2016
С нами: 7 лет
Профессия: Инженер

Непрочитанное сообщение #73 Brat_Egora » 25.07.2016, 16:06

DruG,
Спасибо! Вопрос с DHCP решен. IP поменял на тот, что был раньше. Спасибо ребятам с IT отдела.
Теперь АБД ругается на «недопустимое имя объекта». Оболочка начала выдавать ошибку «Error: Ошибка 12142. Необходимо добавить данное рабочее место в базу данных». Не пойму где его менять…
Поискал на форуме, ничего толкового не нашёл. Все ключи вставлены и не снимались. Рабочее место находится под видеонаблюдением.




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

Непрочитанное сообщение #76 Mixail 51 » 25.07.2016, 16:56

Открываете АБД►выделяете курсором нужный компьютер с именем►внизу нажимаете на кнопку править►в инспекторе меняем поле TCP/IP►сохранить.

Добавлено спустя 9 минут 1 секунду:
По поводу отсутствия рабочего места в базе забыл написать, выдержка из РЭ на АРМ стр.197:

Чтобы добавить новый объект «Рабочее место», необходимо выбрать в дереве объектов объект
«Система» и нажать кнопку «Добавить» . Затем необходимо ввести значения для всех свойств
нового объекта «Рабочее место» (за исключением свойства «Настройки», которое настраивается
уже после добавления объекта) и нажать кнопку «Сохранить» .

Стоит запомнить, что настройка свойства «Настройки» объекта «Рабочее место» возможна
только после того, как объект добавлен в систему.

Чтобы изменить значения свойств объекта «Рабочее место», нужно выбрать в дереве объектов
необходимый объект и нажать кнопку «Править» . Затем необходимо изменить значения
требуемых свойств объекта и нажать кнопку «Сохранить» .

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




  • 4
    448

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

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

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

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

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

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

    Shym
    Перейти к последнему сообщению
    31.01.2020, 19:55
  • 3
    589

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

    5pconet
    Перейти к последнему сообщению
    11.02.2023, 16:44
  • 0
    362

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

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

Кто сейчас на форуме

Сейчас этот раздел просматривают: 1 гость

YFKoenigsegg

1 / 1 / 0

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

Сообщений: 161

1

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

19.02.2020, 14:48. Показов 11379. Ответов 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

3750 / 3255 / 710

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

Сообщений: 7,565

19.02.2020, 14:58

2

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

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

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



0



621 / 385 / 135

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

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

19.02.2020, 15:01

3

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



0



YFKoenigsegg

1 / 1 / 0

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

Сообщений: 161

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



798 / 581 / 207

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

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

19.02.2020, 16:35

5

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



0



YFKoenigsegg

1 / 1 / 0

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

Сообщений: 161

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

11509 / 7857 / 1194

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

Сообщений: 29,464

20.02.2020, 06:53

7

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

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

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



3



YFKoenigsegg

1 / 1 / 0

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

Сообщений: 161

20.02.2020, 19:33

 [ТС]

8

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

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



0



Эксперт .NET

11509 / 7857 / 1194

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

Сообщений: 29,464

21.02.2020, 01:54

9

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

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

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



0



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.

  • Ошибка открытия бд недопустимое имя столбца name queryname qrguests
  • Ошибка открытия бд недопустимое имя объекта videorecognizechannels
  • Ошибка открытия бд недопустимое имя объекта sysgroup queryname qrsysgroup
  • Ошибка открытия бд недопустимое имя объекта prooms орион про
  • Ошибка открытия бд валента