SQL Server: insertion en bloc dans un tableau avec une colonne calculée

calculated-columns sql sqlbulkcopy sql-server

Question

J'essaie d'insérer des données d'un fichier texte dans une table SQL Server 2016 avec une colonne calculée avec bcp.

Ma commande bcp:

bcp Test.dbo.myFirstImport IN D:\myFirstImport.txt -f D:\myFirstImport.xml –T

Ma table:

CREATE TABLE [dbo].[MyFirstImport](
       [PersonID] [smallint] NULL,
       [FirstName] [varchar](25) NULL,
       [LastName] [varchar](30) NULL,
       [BirthDate] [date] NOT NULL,
       [YearMonthCom]  AS (datepart(year,[BirthDate])*(100)+datepart(month,[BirthDate])) PERSISTED
) ON [PRIMARY]

Mes données (séparées par des tabulations):

1   Anthony   Grosse      1980-02-23
2   Alica     Fatnowna    1963-11-14
3   Stella    Rosenhain   1992-03-02

Mon fichier de format:

<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <RECORD>
  <FIELD ID="1" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="7"/>
  <FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="25" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="3" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="30" COLLATION="SQL_Latin1_General_CP1_CI_AS"/>
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="11"/>
  <!--
  <FIELD ID="4" xsi:type="CharTerm" TERMINATOR="\t" MAX_LENGTH="11"/>
  <FIELD ID="5" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="12"/>
  -->
 </RECORD>
 <ROW>
  <COLUMN SOURCE="1" NAME="PersonID" xsi:type="SQLSMALLINT"/>
  <COLUMN SOURCE="2" NAME="FirstName" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="3" NAME="LastName" xsi:type="SQLVARYCHAR"/>
  <COLUMN SOURCE="4" NAME="BirthDate" xsi:type="SQLDATE"/>
  <!--
  <COLUMN SOURCE="5" NAME="YearMonthCom" xsi:type="SQLINT"/>
  -->
 </ROW>
</BCPFORMAT>

Mon erreur

SQLState = 37000, NativeError = 1934 Erreur = [Microsoft] [Pilote ODBC 11 pour SQL Server] [Serveur SQL] Fehler est un INSERT, en utilisant les options SET-Optionen à la place: "QUOTED_IDENTIFIER". Cliquez ici pour en savoir plus sur les options de sauvegarde de la mémoire et de la mémoire (en anglais) . Copie BCP en échec

Et en anglais

INSERT a échoué car les options SET suivantes ont des paramètres incorrects: "QUOTED_IDENTIFIER". Vérifiez que les options SET sont correctes pour une utilisation avec des vues indexées et / ou des index sur des colonnes calculées et / ou des index filtrés et / ou des notifications de requête et / ou des méthodes de type de données XML et / ou des opérations d'index spatial

Réponse populaire

J'ai créé une autre table sans cette colonne calculée et bcp a fonctionné, juste pour être sûr que c'est un problème avec la colonne calculée. Ensuite, j'ai recréé la table (avec la colonne calculée) avec QUOTED_IDENTIFIER sur ON - voir le commentaire de Jacob - et cela n'a toujours pas fonctionné. Mais quand j'ai commencé bcp avec -q cela a fonctionné. Alors merci Jacob!



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi