В базе данных уже существует объект с именем что делать sql

В базе данных уже есть объект с именем

Update-сбой базы данных из консоли диспетчера пакетов. Я использовал Entity Framework 6.X и код-первый подход. Ошибка

«в базе данных уже есть объект с именем «AboutUs».»

как я могу решить эту проблему?

Консоль Управления Пакетами:

11 ответов

кажется, есть проблема в процессе миграции, запустите команду add-migration в «консоль диспетчера пакетов»:

внесите некоторые изменения, а затем обновите базу данных из «начального» файла:

надеюсь ваша проблема будет решена.

«в базе данных уже есть объект с именем «AboutUs».»

это исключение говорит вам, что кто-то уже добавил объект с именем «AboutUs» в базу данных.

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

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

рекомендация для командных сред

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

в моем случае, мой EFMigrationsHistory таблица была опустошена (как-то) и при попытке запустить update-database Я хотел бы получить:

в базе данных уже есть объект с именем «AspNetUsers»

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

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

строка будет иметь 2 столбца: MigrationId и ProductVersion

ProductVersion это версия ef, которую вы используете. Вы можете найти это, введя Get-Package в консоль диспетчера пакетов и ищет ваш пакет ef.

надеюсь, что это полезно для кого-то.

убедитесь, что ваш проект запуска решений имеет правильную строку connectionstring в файле конфигурации. Или задайте параметр-StartUpProjectName при выполнении команды update-database. Параметр-StartUpProjectName указывает файл конфигурации, используемый для именованных строк подключения. Если этот параметр опущен, используется файл конфигурации указанного проекта.

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

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

удалить строки из таблицы dbo_MigrationHistory или удалить таблицу и запустить

он будет запускать все миграции в вашем проекте Один за другим

Примечание: не рекомендуется решение. но в некоторых случаях быстро исправить.

для меня dbo._MigrationHistory в производственной базе данных отсутствовали записи миграции во время процесса публикации, но база данных разработки имела все записи миграции.

Если вы уверены, что производственная БД имеет ту же самую и самую новую схему по сравнению с dev db, скопируйте все записи миграции в рабочую БД может решить эту проблему.

Вы можете сделать в VisualStudio исключительно.

обратите внимание, что, опять же, это не рекомендуется в сложных и серьезных проектах. Используйте это только у вас есть проблемы во время ASP.Net или обучение EntityFramework.

в моем случае, проблема была в сеялки. Я звонил _ctx.База данных.EnsureCreated () внутри него и, насколько я понял, команда update database успешно выполнена, но затем сеялка попыталась создать базу данных «второй» раз.

просто выполните команду update-migration-Script. Это создает новый *.SQL-скрипт, который включает все изменения БД, включенных в миграции. В конце кода находятся команды insert примерно так: INSERT [dbo].[__MigrationHistory] ([MigrationId], [ContextKey], [Model], [ProductVersion]) вы можете просто запустить эту вставку, и DB будет синхронизирован

Источник

EF 5 Ошибки миграции кода: «в базе данных уже есть объект с именем _____ «

Занимаясь миграцией кода EF5, я столкнулся со странной повторяющейся проблемой, которая теперь мешает мне работать. Попытался запустить update-database и получил эту ошибку:

В базе данных уже есть объект с именем ‘RequestStatus’.

Подробный дамп журнала :

Я перепробовал все, что нашел в Гугле. Вещи, которые я пробовал и не дал никаких результатов:

Больше всего бесит то, что мой коллега находится в той же кодовой базе и вообще не испытывает этой проблемы. Я использую VS2012 и EF5 LocalDb.

Немного Кода Для Справки

Инициализатор Базы Данных

Контекст БД

RequestStatus, на котором он терпит неудачу.

Что является частью модели запроса

Семенной Метод / Configuration.cs

1 ответ

Я работаю над проектом ASP.NET MVC с Entity Framework с кодом сначала из базы данных. Я получаю модели для каждой таблицы в базе данных. Я внес некоторые изменения в модели, включил миграцию, и когда я начинаю миграцию, я получаю ошибку: В базе данных уже есть объект с именем ‘TableName’. Я.

Убедитесь, что имя строки подключения совпадает с именем DbContext, которое вы пытаетесь обновить. Другими словами, вы пытаетесь изменить существующую базу данных.

Похожие вопросы:

Это мой запрос, который я пытаюсь запустить в своей базе данных, но я нашел эти 3 ошибки ниже keep happened. CREATE VIEW STUD1 AS SELECT *, RN = ROW_NUMBER() OVER (PARTITION BY R.ContractID ORDER BY.

Я работаю над проектом ASP.NET MVC с Entity Framework с кодом сначала из базы данных. Я получаю модели для каждой таблицы в базе данных. Я внес некоторые изменения в модели, включил миграцию, и.

У меня есть веб-сайт asp.net core mvc, использующий ядро entity framework. Я не знаю, как это произошло изначально, но я не могу пройти мимо этой ошибки: There is already an object named AspNetRoles.

В SQL Server 2014 году я хотел создать внешний ключ ALTER TABLE tblPerson ADD CONSTRAINT tblPerson_Gender_FK FOREIGN KEY(Gender) REFERENCES tblGender(ID); Но я всегда получаю эту ошибку: Msg 2714.

Пожалуйста, смотрите код ниже: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE Test AS BEGIN begin select * into #dbreviews from dbreviews end drop table #dbreviews begin select *.

Я знаю, что в ef core вы можете генерировать сценарий миграции от одной миграции к следующей. Допустим, у меня есть 5 миграций: Миграция1 Миграция2 Миграция3 Миграция4 Миграция5 Migration3 и.

Источник

T-SQL ошибка » В базе данных уже существует объект с именем «#t2». «

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

drop table #t1
select p.ID as PID,pp.id into #t1 FROM tmp_for_attach t
inner join people p on t.enp=p.enp—t.fam=p.fam and t.IM=p.IM AND t.OT=p.OT AND t.DR=p.DR
inner join POLIS PP ON P.ID=pP.PID
WHERE (stage = 1) AND t.opdoc=3
order by p.id,pp.ID

drop table #t2
select p.ID,MAX(pp.id) as maxpolid into #t2 FROM tmp_for_attach t
inner join people p on t.enp=p.enp—t.fam=p.fam and t.IM=p.IM AND t.OT=p.OT AND t.DR=p.DR
inner join POLIS PP ON P.ID=pP.PID
WHERE (stage = 1) AND t.opdoc=3
group by p.id
order by p.id

delete from #t1 where id in(select #t2.maxpolid from #t2)

select PID,MAX(id)as id into #t2 from #t1
group by pid
order by pid

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

BEGIN TRANSACTION;
drop table #t1
select p.ID as PID,pp.id into #t1 FROM tmp_for_attach t
inner join people p on t.enp=p.enp—t.fam=p.fam and t.IM=p.IM AND t.OT=p.OT AND t.DR=p.DR
inner join POLIS PP ON P.ID=pP.PID
WHERE (stage = 1) AND t.opdoc=3
order by p.id,pp.ID

drop table #t2
select p.ID,MAX(pp.id) as maxpolid into #t2 FROM tmp_for_attach t
inner join people p on t.enp=p.enp—t.fam=p.fam and t.IM=p.IM AND t.OT=p.OT AND t.DR=p.DR
inner join POLIS PP ON P.ID=pP.PID
WHERE (stage = 1) AND t.opdoc=3
group by p.id
order by p.id

delete from #t1 where id in(select #t2.maxpolid from #t2)

drop table #t2
COMMIT TRANSACTION;

BEGIN TRANSACTION;
select PID,M

BEGIN TRANSACTION;
select PID,MAX(id)as id into #t2 from #t1
group by pid
order by pid

то же самое в той же строке

DROP TABLE and CREATE TABLE should not be executed on the same table in the same batch. Otherwise an unexpected error may occur.

Источник

В базе данных уже есть объект с именем I_XXXRECID

Эта ошибка появляется при синхронизации DataDictionary.

Описание ошибки SQL: [Microsoft][Собственный клиент SQL Server 11.0][SQL Server] В базе данных уже есть объект с именем «I_100013RECID».

Оператор SQL: ALTER TABLE «DBO».ACOCOSTCENTERATTRIBUTEVALUE_BR ADD CONSTRAINT I_100013RECID ПЕРВИЧНЫЙ КЛЮЧ НЕКЛЮЧЕННЫЙ (RECID)

Я скопировал всю базу данных по бизнесу и коду и создал новый AX Env. Я не уверен, есть ли эта ошибка и в исходном Env, но я хочу решить эту проблему в новом Env.

Что я уже пробовал:

Удалил таблицу из SQL Server Management Studio и затем синхронизировал из AOT, но ошибка не исчезла.

Пытался удалить имя индекса из SSMS:

Но получаю эту ошибку:

Не удалось удалить индекс ‘ACOCOSTCENTERATTRIBUTEVALUE_BR.I_100013RECID’, так как он не существует или у вас нет разрешения.

Но при запросе индексов он показывает правильную таблицу:

РЕДАКТИРОВАТЬ 1: Дополнительная информация

Нет конфликта в таблице ID:

Таблица из SSMS:

Удаление таблицы из SSMS:

Почему из 3 индексов не удаляются 2 индекса при удалении таблицы из SSMS? Почему только 1 удаляется? Проверьте ниже для 3 индексов после синхронизации. Как от них избавиться? SSMS не позволит мне удалить его, сказав: «Каталог нельзя изменить». Могу ли я попытаться удалить его, изменив настройки основных данных? Я не уверен, что все таблицы, связанные с этой таблицей, заполнены в каталоге.

Источник

MSSQLSERVER_208

Сведения

attributeЗначение
Название продуктаSQL Server
Идентификатор события208
Источник событияMSSQLSERVER
КомпонентSQLEngine
Символическое имяSQ_BADOBJECT
Текст сообщенияНедопустимое имя объекта «%.*ls».

Объяснение

Не удается найти указанный объект.

Возможные причины

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

Объект указан неверно.

Объект не существует в текущей базе данных или в указанной базе данных.

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

Действие пользователя

Проверьте следующую информацию и исправьте инструкцию соответствующим образом.

Имя объекта записано правильно.

Контекст текущей базы данных является правильным. Если не указано имя базы данных для объекта, то объект должен существовать в текущей базе данных. Дополнительные сведения об установке контекста базы данных см. в статье USE (Transact-SQL).

Объект существует в системных таблицах. Чтобы проверить существование таблицы или другого объекта на уровне схемы, отправьте запрос к представлению каталога sys.objects. Если объект отсутствует в системных таблицах, значит он был удален или у пользователя отсутствуют разрешения на просмотр метаданных объекта. Дополнительные сведения о разрешениях на просмотр метаданных объекта см. в статье Настройка видимости метаданных.

Объект содержится в применяемой по умолчанию схеме пользователя. Если его там нет, имя объекта нужно указывать в двухкомпонентном формате: имя_схемы.имя_объекта. Следует отметить, что скалярные функции должны всегда вызываться с использованием по меньшей мере двухкомпонентного имени.

Учет регистра в параметрах сортировки базы данных.

Если в базе данных используются параметры сортировки с учетом регистра, то имя объекта должно согласовываться по регистру с именем объекта в базе данных. Например, если определенный объект имеет имя MyTable в базе данных с параметрами сортировки с учетом регистра, запросы, в которых этот объект именуется как mytable или Mytable, будут возвращать ошибку 208, так как имена объектов не согласуются.

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

Аббревиатура CS в имени параметров сортировки указывает, что учитывается регистр символов. Например, значение Latin1_General_CS_AS определяет параметры сортировки с учетом регистра и с учетом диакритических знаков. Значение CI указывает, что в параметрах сортировки не учитывается регистр.

Пользователь имеет разрешение на получение доступа к объекту. Чтобы проверить, какие разрешения имеет пользователь для доступа к объекту, можно воспользоваться системной функцией Has_Perms_By_Name.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *