Por que estou recebendo um erro ao inserir quando IDENTITY_INSERT
está desativado?
Como ativá-lo corretamente no SQL Server 2008? É usando o SQL Server Management Studio?
Eu executei esta consulta:
SET IDENTITY_INSERT Database. dbo. Baskets ON
Em seguida, recebi a mensagem de volta no console de que os comandos foram concluídos com êxito. No entanto, quando executo o aplicativo, ele ainda gera o erro mostrado abaixo:
Cannot insert explicit value for identity column in table 'Baskets' when
IDENTITY_INSERT is set to OFF.
sql
sql-server-2008
Principiante
fonte
fonte
Respostas:
Via SQL conforme MSDN
A mensagem de erro completa informa exatamente o que está errado ...
fonte
Eu tive um problema em que ele não me permitiu inseri-lo mesmo depois de definir o IDENTITY_INSERT ON.
O problema era que eu não especifiquei os nomes das colunas e, por algum motivo, ele não gostou.
Então, basicamente faça o INSERT INTO completo tbl (cols) Valores (vals)
fonte
Importação: você deve escrever colunas na
INSERT
instruçãoNão está correto.
Está correto
fonte
Eu sei que esse é um tópico mais antigo, mas acabei de me deparar com isso. Se o usuário estiver tentando executar inserções na coluna Identity após outra sessão, defina IDENTITY_INSERT ON, então ele provavelmente receberá o erro acima.
A configuração do valor de inserção de identidade e os comandos subsequentes de inserção de DML devem ser executados na mesma sessão.
Aqui, o @Beginner estava configurando o Identity Insert ON separadamente e, em seguida, executando as inserções do aplicativo. É por isso que ele obteve o erro abaixo:
fonte
Provavelmente, quando você tem um campo PRIMARY KEY e está inserindo um valor duplicado ou com o sinalizador INSERT_IDENTITY definido como ativado
fonte
Parece necessário colocar um
SET IDENTITY_INSERT Database.dbo.Baskets ON;
antes de cada SQLINSERT
lote de envio .Você pode enviar vários
INSERT ... VALUES ...
comandos iniciados com umSET IDENTITY_INSERT ... ON;
sequência no início. Apenas não coloque nenhum separador de lote entre eles.Não sei por que as
SET IDENTITY_INSERT ... ON
paradas param de funcionar após o bloco de envio (por exemplo:.ExecuteNonQuery()
em C #). Eu tive que colocarSET IDENTITY_INSERT ... ON;
novamente no início da próxima seqüência de comando SQL.fonte
Outra opção é onde você tem tabelas como 'type' ou 'status', por exemplo, OrderStatus, onde você sempre deseja controlar o valor do Id, crie a coluna Id (Chave Primária) sem que seja uma coluna Identity.
fonte
Você precisa adicionar o comando 'go' depois de definir a inserção de identidade. Exemplo:
fonte