Risulta che il problema riguardava i parametri SET. Ho usato il codice sottostante ottenuto da Here. Per determinare quali opzioni sono state impostate in SQL Server Management Studio (in cui l'inserto ha funzionato). Quindi, inserendo ognuno di questi in un exec prima della mia istruzione di inserimento, le cose hanno funzionato di nuovo. Non avevo bisogno di mantenere tutte le opzioni, quindi di seguito mostro quelle che erano necessarie per farlo funzionare.
DECLARE @options INT
SELECT @options = @@OPTIONS
PRINT @options
IF ((1 & @options) = 1) PRINT 'DISABLE_DEF_CNST_CHK'
IF ((2 & @options) = 2) PRINT 'IMPLICIT_TRANSACTIONS'
IF ((4 & @options) = 4) PRINT 'CURSOR_CLOSE_ON_COMMIT'
IF ((8 & @options) = 8) PRINT 'ANSI_WARNINGS'
IF ((16 & @options) = 16) PRINT 'ANSI_PADDING'
IF ((32 & @options) = 32) PRINT 'ANSI_NULLS'
IF ((64 & @options) = 64) PRINT 'ARITHABORT'
IF ((128 & @options) = 128) PRINT 'ARITHIGNORE'
IF ((256 & @options) = 256) PRINT 'QUOTED_IDENTIFIER'
IF ((512 & @options) = 512) PRINT 'NOCOUNT'
IF ((1024 & @options) = 1024) PRINT 'ANSI_NULL_DFLT_ON'
IF ((2048 & @options) = 2048) PRINT 'ANSI_NULL_DFLT_OFF'
IF ((4096 & @options) = 4096) PRINT 'CONCAT_NULL_YIELDS_NULL'
IF ((8192 & @options) = 8192) PRINT 'NUMERIC_ROUNDABORT'
IF ((16384 & @options) = 16384) PRINT 'XACT_ABORT'
Qui ci sono le opzioni che ho finito per avere bisogno:
$dbPDO->exec("SET ANSI_WARNINGS ON");
$dbPDO->exec("SET ANSI_PADDING ON");
$dbPDO->exec("SET ANSI_NULLS ON");
$dbPDO->exec("SET QUOTED_IDENTIFIER ON");
$dbPDO->exec("SET CONCAT_NULL_YIELDS_NULL ON");
Aggiornamento: Sembra vincoli FK provocato il seguente errore. Quanto sopra ha risolto anche questo errore.
SQLSTATE[HY000]: General error: 8624 General SQL Server error: Check messages from the SQL Server [8624] (severity 16) [(null)]
Potrebbe essere necessario scrivere le impostazioni usando PHP. Es .: $ dbPDO-> exec ("SET ANSI_WARNINGS ON"); – jjwdesign
Dove lo metto? Su un file specifico o nel server? – bleykFaust