none
Problema conversione data RRS feed

  • Domanda

  • Ciao a tutti
    quando esporto un database da un server Windows server 2008 r2 in locale, ricevo questo messaggio di errore:

    La conversione di un tipo di dati nvarchar in datetime ha generato un valore non compreso nell'intervallo dei valori consentiti.

    Per esempio quì:

    INSERT [dbo].[ShoppingCartItem] ([Id], [StoreId], [ShoppingCartTypeId], [CustomerId], [ProductId], [AttributesXml], [CustomerEnteredPrice], [Quantity], [CreatedOnUtc], [UpdatedOnUtc]) VALUES (10, 1, 1, 35, 2, N'', CAST(0.0000 AS Decimal(18, 4)), 1, CAST(N'2014-09-24 16:23:00.500' AS DateTime), CAST(N'2014-09-24 16:23:00.500' AS DateTime))

    Lo script lo creo con SqlServer Management Studio.

    Cosa dovrei impostare durante la creazione dello script per non avere questo problema?
    Grazie
    mercoledì 8 ottobre 2014 16:33

Risposte


  • Il problema si presenta quando eseguo il locale lo script crato sul server.

    Se dal server ti funziona puoi provare a impostare sul client dove esegui lo script gli stessi regional settings che hai sul server. Da pannello di controllo puoi verificare come è impostato il formato della data (vedi immagine)

    

    • Contrassegnato come risposta SviPla giovedì 9 ottobre 2014 08:11
    giovedì 9 ottobre 2014 07:54

Tutte le risposte

  • Ciao SviPla,

    il problema dovrebbe dipendere dal tentativo di convertire una data in formato non ISO su uno specifico formato nazionale (Italiano, immagino). Come soluzione, ti consiglierei di sostituire alla funzione CAST la funzione CONVERT, e di inserire, nello spazio che separa la data dall'ora, il carattere "T"

    In questo modo:

    CONVERT(datetime, '2014-09-24T16:23:00.500')

    la data sarà processata in modo indipendente dal linguaggio, e la query dovrebbe andare a buon fine. Ovviamente tale sostituzione va applicata a tutte le variabili che stai inserendo come DATETIME.

    Spero di esserti stato di aiuto.


    Emiliano Musso - MVP Visual Basic

    giovedì 9 ottobre 2014 06:37
  • Ciao e grazie

    il problema è che lo script viene creato da management studio e non posso modificare tutte le righe.

    Il problema si presenta quando eseguo il locale lo script crato sul server.

    In pratica vede le date in formato yyyy-DD-MM e non yyyy-MM-DD
    • Modificato SviPla giovedì 9 ottobre 2014 08:08
    giovedì 9 ottobre 2014 07:14
  • Per questo brutte notizie.. per ora non si riesce a fare nulla.

    Ci sono però altre possibilità:

    1. usare tool di terze parti (spesso a pagamento, vedi se ti serve regolarmente o se ti bastano le licenze free, ad esempio http://www.ssmstoolspack.com/)
    2. generarti da solo le insert usando script t-sql
    3. esportare dati su file e poi reimportarli totalmente sulla stessa tabella (se è un overwrite) oppure su di una nuova per fare poi lo script differenza

    Per ora mi viene solo questo.


    Alessandro Alpi SQL Server MVP

    giovedì 9 ottobre 2014 07:44
    Moderatore

  • Il problema si presenta quando eseguo il locale lo script crato sul server.

    Se dal server ti funziona puoi provare a impostare sul client dove esegui lo script gli stessi regional settings che hai sul server. Da pannello di controllo puoi verificare come è impostato il formato della data (vedi immagine)

    

    • Contrassegnato come risposta SviPla giovedì 9 ottobre 2014 08:11
    giovedì 9 ottobre 2014 07:54