none
[SQL Server] Rallentamento nel salvataggio dati del database RRS feed

  • Domanda

  • Buongiorno a tutti, avrei una domanda sperando in una soluzione applicabile al mio problema..

    ho un Database SQL Server, dove al suo interno ci sono alcune tabelle in relazione, una a molti, tra loro tramite chiave esterna, ovvero tramite dei campi creati appositamente per poterle mettere in relazione, alcune tabelle hanno più di una relazione, come la tabella Lavorazioni, quindi si parla di:

    Tabella Lavorazioni con 41 campi

    Tabella Clienti con 30 campi

    Tabella manutenzioni con 12 campi

    queste sono quelle con maggior numero di campi:

    questo per dare un'idea, come si può vedere lavoro sul Visual Basic, come struttura di tabelle utilizzo questo tipo:

    CREATE TABLE [dbo].[Table_Lavorazioni] (
        [Id_Lavorazione]              INT            IDENTITY (1, 1) NOT NULL,
        [CodiceLavorazioni]           NVARCHAR (10)  NULL,
        [CodiceCliente]               NVARCHAR (10)  NULL,
        [IDPreventivo]                NVARCHAR (10)  NULL,
        [IDDisegno]                   NVARCHAR (10)  NULL,
        [NomeProprietario]            NVARCHAR (50)  NULL,
        [CognomeProprietario]         NVARCHAR (50)  NULL,
        [IndirizzoProprietario]       NVARCHAR (50)  NULL,
        [CivicoProprietario]          NVARCHAR (10)  NULL,
        [ComuneProprietario]          NVARCHAR (50)  NULL,
        [ProvinciaProprietario]       NVARCHAR (2)   NULL,
        [CapProprietario]             NVARCHAR (5)   NULL,
        [SettoreProprietario]         NVARCHAR (50)  NULL,
        [RagioneSocialeProprietario]  NVARCHAR (50)  NULL,
        [IndirizzoRagSocProprietario] NVARCHAR (50)  NULL,
        [CivicoRagSocProprietario]    NVARCHAR (10)  NULL,
        [ComuneRagSocProprietario]    NVARCHAR (50)  NULL,
        [ProvinciaRagSocProprietario] NVARCHAR (2)   NULL,
        [CapRagSocProprietario]       NVARCHAR (5)   NULL,
        [CodFiscaleProprietario]      NVARCHAR (16)  NULL,
        [PIvaProprietario]            NVARCHAR (11)  NULL,
        [TelefonoProprietario]        NVARCHAR (15)  NULL,
        [CellulareProprietario]       NVARCHAR (15)  NULL,
        [FaxProprietario]             NVARCHAR (15)  NULL,
        [EmailProprietario]           NVARCHAR (50)  NULL,
        [SitoProprietario]            NVARCHAR (50)  NULL,
        [NoteProprietario]            NVARCHAR (500) NULL,
        [IndirizzoLavoro]             NVARCHAR (50)  NULL,
        [CivicoLavoro]                NVARCHAR (10)  NULL,
        [ComuneLavoro]                NVARCHAR (50)  NULL,
        [ProvinciaLavoro]             NVARCHAR (2)   NULL,
        [CapLavoro]                   NVARCHAR (5)   NULL,
        [TipoFattura]                 NVARCHAR (50)  NULL,
        [Piano]                       NVARCHAR (50)  NULL,
        [Interno]                     NVARCHAR (50)  NULL,
        [Scala]                       NVARCHAR (50)  NULL,
        [c1]                          NVARCHAR (50)  NULL,
        [c2]                          NVARCHAR (50)  NULL,
        [c3]                          NVARCHAR (50)  NULL,
        [c4]                          NVARCHAR (50)  NULL,
        [c5]                          NVARCHAR (50)  NULL,
        PRIMARY KEY CLUSTERED ([Id_Lavorazione] ASC)
    );

    Qualcuno sa darmi un'indicazione per poter risolvere il problema? , si tratta di un'attesa nel salvataggio dei dati di minimo 5..6 sec.   

    P.S. c'è chi mi ha detto :

    Resta il dubbio che tu estrai non un solo recordo ma un insieme di recordo e da qui il rallentamento.
    Come posso fare a verificarlo? come potrebbe accadere una cosa simile...facendo come?

    Grazie


    • Modificato Guido.G venerdì 22 agosto 2014 07:38 correzione
    venerdì 22 agosto 2014 07:36

Risposte

  • Come temevi.. Non ho un problema. Va veloce e non sembra rallentare su nessua operazione.
    C'è da capire se non fosse quell'access che sia "bloccato".
    Antivirus, antimalware che girano e che monitorizzano quella cartella?
    Sinceramente non ho altre cartucce. Sembra proprio un problema legato alla tua macchina.. Non saprei che altro aggiungere.

    Alessandro Alpi SQL Server MVP

    • Contrassegnato come risposta Guido.G mercoledì 3 settembre 2014 16:25
    mercoledì 3 settembre 2014 08:05
    Moderatore

Tutte le risposte

  • Ciao Guido,

    a prescindere dal fatto che i tipi di dato nvarchar per campi codice li vedo un tantino fuori luogo (ti servono proprio unicode? e sono tutte stringhe? fai attenzione perché un campo sovradimensionato rischia di farti aumentare anche le operazioni di IO) quello che non capisco è che operazioni fai e di quali operazioni parliamo in quei 5/6 secondi.

    Se si tratta di una singola INSERT c'è da capire ad esempio se il tuo database è in AUTO CLOSE (quindi il tempo per connettersi ed aprire il database deve essere aggiunto a quello della effettiva insert). Se si tratta di più insert in un batch c'è da capire quante sono e come vengono fatte. Potrebbe poi esserci un ciclo applicativo che considera altre cose, per di più anche sotto transazione.

    Riesci ad essere più dettagliato? Puoi passarci parte del codice che viene eseguito durante l'operazione di salvataggio? Che versione ed edizione di SQL Server stai utilizzando (è un CE o un LocalDB)?

    grazie


    Alessandro Alpi SQL Server MVP

    sabato 23 agosto 2014 01:21
    Moderatore
  • Buongiorno Alessandro,per me non sarà facile darti tante informazioni, perchè sono auto didatta e quindi con molte lacune...cercherò comunque di darti più informazioni possibili e se qualcosa non so come verificarlo...se puoi dirmi come fare ti darò ancora altre informazioni...per iniziare, secondo quello che mi chiedi:

    1) ti servono proprio unicode? e sono tutte stringhe?

    -Se non sbaglio l'unicode comprende tutti i caratteri anche quelli stranieri di altre lingue, ed effettivamente...no non mi servono, il progetto è solo per me in italiano.

    - Diciamo che molti dei campi sono stringhe ma anche altri non lo sono. (Ho impostato tutto in questo modo pensando che non facesse tutta questa differenza...da profano....mi sembra di capire che innanzitutto dovrei sistemare queste cose,utilizzare i campi giusti...quali mi consiglieresti per campi testo, numero? ho visto che c'è molte possibilità considerando che non è conosciuta la lunghezza di alcuni campi.

    2) quello che non capisco è che operazioni fai e di quali operazioni parliamo in quei 5/6 secondi.

    -Intendo che creo un record, immetto i dati nei campi e dal momento che salvo i dati devo attendere minimo 5 ..6 sec prima che l'applicazione abbia finito di fare le operazioni.

    3) database è in AUTO CLOSE 

    - Per quanto riguarda se il database è di questo tipo ...non saprei se mi dai un indizio come poterlo riscontrare ti do anche questa notizia... se intendi le righe nella parte Load del form:

     Private Sub frm_Lavorazione_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            'TODO: questa riga di codice carica i dati nella tabella 'Database_PreventiviDataSet.Table_Preventivi'. È possibile spostarla o rimuoverla se necessario.
            Me.Table_PreventiviTableAdapter.Fill(Me.Database_PreventiviDataSet.Table_Preventivi)
            'TODO: questa riga di codice carica i dati nella tabella 'Database_GestioneDataSet.Table_Manutenzioni'. È possibile spostarla o rimuoverla se necessario.
            Me.Table_ManutenzioniTableAdapter.Fill(Me.Database_GestioneDataSet.Table_Manutenzioni)
          
            'TODO: questa riga di codice carica i dati nella tabella 'Database_ConfigurazioneDataSet.Table_Fornitori'. È possibile spostarla o rimuoverla se necessario.
            Me.Table_FornitoriTableAdapter.Fill(Me.Database_ConfigurazioneDataSet.Table_Fornitori)
            'TODO: questa riga di codice carica i dati nella tabella 'Database_ConfigurazioneDataSet.Table_Iva'. È possibile spostarla o rimuoverla se necessario.
            Me.Table_IvaTableAdapter.Fill(Me.Database_ConfigurazioneDataSet.Table_Iva)
           
            'TODO: questa riga di codice carica i dati nella tabella 'Database_GestioneDataSet.Table_MaterialiUtilizzati'. È possibile spostarla o rimuoverla se necessario.
            Me.Table_MaterialiUtilizzatiTableAdapter.Fill(Me.Database_GestioneDataSet.Table_MaterialiUtilizzati)
            'TODO: questa riga di codice carica i dati nella tabella 'Database_GestioneDataSet.Table_Lavorazioni'. È possibile spostarla o rimuoverla se necessario.
            Me.Table_LavorazioniTableAdapter.Fill(Me.Database_GestioneDataSet.Table_Lavorazioni)
            'TODO: questa riga di codice carica i dati nella tabella 'DataBase_GestioneDataSet.Table_Clienti'. È possibile spostarla o rimuoverla se necessario.
            Me.Table_ClientiTableAdapter.Fill(Me.Database_GestioneDataSet.Table_Clienti)
            frm_Gestione.Principale_ToolStripStatusLabel.Text = "---" 'Predispone il testo della toolstrip
        End Sub

    3) Se si tratta di più insert in un batch c'è da capire quante sono e come vengono fatte

    - Su questo ...mi dispiace ma nonn ho capito cosa vuoi dire :-(

    4) Puoi passarci parte del codice che viene eseguito durante l'operazione di salvataggio?

    - La routine di salvataggio di una parte è questa:

    Private Sub Clienti_SalvaRecord_Click(sender As Object, e As EventArgs) Handles Clienti_SalvaRecord.Click
            '---- azzeramento barra inferiore ------------------------------------------
            frm_Gestione.azzeramento_BarraNote()
            '---------------------------------------------------------------------------
            '---- immagazzina la posizione corrente del BindingNavigator Clienti--------
            Dim rec As Integer = CInt(Me.Clienti_BindingNavigatorPositionItem.Text)
            '--------------------------------------------------------------------------------
            'inizia gestione eccezioni e calcolo
            'Try
            '-------------------- Controlla la presenza dei campi codice -----------------------------
    
            If CodiceCliente_Clienti.Text = "" And ID_Clienti_Clienti.Text = "" Then ' se non sono presenti dati.
                '---------------ROUTINE DI CALCOLO CODICE--------------------------------------------
                'verifica la presenza dei campi nome e cognome e civico
                If NomeClienteTextBox.Text <> "" And CognomeClienteTextBox.Text <> "" And CivicoClienteTextBox.Text <> "" Then
                    ' se sono presenti dati  dei campi nome e cognome e civico effettua il calcolo del codice cliente.
                    '----- Prepara le variabili del calcolo del codice Clienti se sono presenti i campi nome/cognome/civico
                    id = Clienti_BindingNavigatorPositionItem.Text
                    campo1 = NomeClienteTextBox.Text.Substring(1, 1)
                    campo2 = CognomeClienteTextBox.Text.Substring(1, 1)
                    campo3 = CivicoClienteTextBox.Text.Substring(0, 1)
                    'scrive e calcola il codice
                    Me.ID_Clienti_Clienti.Text = (id & campo1 & campo2 & campo3).ToUpper 'ToUpper converte in caratteri maiuscoli
                    Me.CodiceCliente_Clienti.Text = (id & campo1 & campo2 & campo3).ToUpper 'ToUpper converte in caratteri maiuscoli
    
                    ' se non sono presenti dati  dei campi nome e cognome e civico
                    ' ma  sono presenti dati nei campi Ragione sociale, Indirizzo Ragione Sociale e Civico Ragione Sociale.
                ElseIf RagioneSocialeClienteTextBox.Text <> "" And IndirizzoRagSocClienteTextBox.Text <> "" And CivicoRagSocClienteTextBox.Text <> "" Then
    
                    'prepara le variabili del calcolo del codice Clienti se 
                    'non sono presenti i campi nome/cognome/civico
                    'prende i valori su Rag.Soc/Ind.R.S./Civico Rag.Soc.
    
                    'toglie eventuali punti "."
                    Dim RSP As String = RagioneSocialeClienteTextBox.Text.Replace(".", "")
                    'Toglie eventuali spazi" "
                    Dim RSPS As String = RSP.Replace(" ", "")
                    'estrae dalla Ragione soc. il valore
                    campo1 = RSPS.Substring(1, 1) 'RS
                    'toglie eventuali punti "."
                    Dim IRSP As String = IndirizzoRagSocClienteTextBox.Text.Replace(".", "")
                    'Toglie eventuali spazi" "
                    Dim IRSPS As String = IRSP.Replace(" ", "")
                    campo2 = IRSPS.Substring(2, 1)
                    campo3 = CivicoRagSocClienteTextBox.Text.Substring(0, 1) 'civico
                    id = Clienti_BindingNavigatorPositionItem.Text
    
                    'scrive e compone il codice
                    Me.ID_Clienti_Clienti.Text = (id & campo1 & campo2 & campo3).ToUpper
                    Me.CodiceCliente_Clienti.Text = (id & campo1 & campo2 & campo3).ToUpper
    
    
                Else
                    MessageBox.Show("Riscontratala mancanza di uno o più campi" & (Chr(13)) &
                          " vuoti indispensabili per genrare il codice del record." & (Chr(13)) &
                          "Verificare....", "ATTENZIONE!! SALVATAGGIO INTERROTTO.",
                          MessageBoxButtons.OK, MessageBoxIcon.Information)
                    'colora i campi importanti
                    Me.NomeClienteTextBox.BackColor = Color.Beige
                    Me.CognomeClienteTextBox.BackColor = Color.Beige
                    Me.IndirizzoClienteTextBox.BackColor = Color.Beige
                    Me.CivicoClienteTextBox.BackColor = Color.Beige
                    Me.RagioneSocialeClienteTextBox.BackColor = Color.Beige
                    Me.IndirizzoRagSocClienteTextBox.BackColor = Color.Beige
                    Me.CivicoRagSocClienteTextBox.BackColor = Color.Beige
    
                    Exit Sub
                End If
            End If
            '------------------------------------------------------------------------------
            frm_Gestione.azzeramento_BarraNote()  'azzeramento ToolStripProgressBar
            Me.Validate()
            Me.Table_ClientiBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.Database_GestioneDataSet)
            Me.Table_ClientiTableAdapter.Fill(Me.Database_GestioneDataSet.Table_Clienti)
    
            'mantiene la barra sul record corrente
            Me.Table_ClientiBindingSource.Position = rec - 1
            NomeClienteTextBox.Focus()
    
            frm_Gestione.barra_progresso_continua()
            frm_Gestione.Principale_ToolStripStatusLabel.Text = "Dati salvati nel database CODE:.. " & Me.CodiceCliente_Clienti.Text
            'frm_Gestione.Principale_ToolStripStatusLabel1.Text = Me.CodiceCliente_Clienti.Text
            disabilita_campi_code()
           
            Me.NomeClienteTextBox.Focus()
            Me.Clienti_SalvaRecord.Enabled = False '--- icona salva clienti
            Me.Clienti_Elimina_ToolStripButton.Enabled = True
            Me.NomeClienteTextBox.BackColor = Color.White
            Me.CognomeClienteTextBox.BackColor = Color.White
            Me.IndirizzoClienteTextBox.BackColor = Color.White
            Me.CivicoClienteTextBox.BackColor = Color.White
            Me.RagioneSocialeClienteTextBox.BackColor = Color.White
            Me.CivicoRagSocClienteTextBox.BackColor = Color.White
            Me.IndirizzoRagSocClienteTextBox.BackColor = Color.White
        End Sub

    5) Che versione ed edizione di SQL Server stai utilizzando (è un CE o un LocalDB)?

    - Per quanto riguarda la versione di SQL...non so come fare per fartelo sapere, mentre per il tipo di database, questa è la stinga di connessione e se non sbagli è .."LocalDB"

    Data Source=(LocalDB)\v11.0;AttachDbFilename="C:\Users\utente\Documents\Visual Studio 2013\Projects\GestionaleDitta\GestionaleDitta\Database_FatturazioneFattura.mdf";Integrated Security=True;Connect Timeout=30

    Credo d'aver risposto  a tutto ...o quasi....attendo la tua sentenza.....

    Grazie

    Guido

    P.s.

     Nel tentativo di modificare il tipo di carattere nelle query ho letto questo:

    Nota importante Importante I tipi di dati ntext, text e image verranno rimossi a partire da una delle prossime

    versioni di Microsoft SQL Server. Evitare di utilizzare questi tipi di dati in un

    nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni

    che attualmente li utilizzano.

    Utilizzare nvarchar(max), varchar(max) e varbinary(max) in alternativa.

    http://msdn.microsoft.com/it-it/library/ms187993.aspx

    Ho modificato i campi delle tabelle per vedere se c'è qualche cambiamento:

    CREATE TABLE [dbo].[Table_Lavorazioni] (
        [Id_Lavorazione]              INT           IDENTITY (1, 1) NOT NULL,
        [CodiceLavorazioni]           VARCHAR (10)  NULL,
        [CodiceCliente]               VARCHAR (10)  NULL,
        [IDPreventivo]                VARCHAR (10)  NULL,
        [IDDisegno]                   VARCHAR (10)  NULL,
        [NomeProprietario]            VARCHAR (50)  NULL,
        [CognomeProprietario]         VARCHAR (50)  NULL,
        [IndirizzoProprietario]       VARCHAR (50)  NULL,
        [CivicoProprietario]          VARCHAR (10)  NULL,
        [ComuneProprietario]          VARCHAR (50)  NULL,
        [ProvinciaProprietario]       CHAR (2)      NULL,
        [CapProprietario]             NUMERIC (5)   NULL,
        [SettoreProprietario]         VARCHAR (50)  NULL,
        [RagioneSocialeProprietario]  VARCHAR (50)  NULL,
        [IndirizzoRagSocProprietario] VARCHAR (50)  NULL,
        [CivicoRagSocProprietario]    VARCHAR (10)  NULL,
        [ComuneRagSocProprietario]    VARCHAR (50)  NULL,
        [ProvinciaRagSocProprietario] CHAR (2)      NULL,
        [CapRagSocProprietario]       NUMERIC (5)   NULL,
        [CodFiscaleProprietario]      NUMERIC (16)  NULL,
        [PIvaProprietario]            NUMERIC (11)  NULL,
        [TelefonoProprietario]        NUMERIC (15)  NULL,
        [CellulareProprietario]       NUMERIC (15)  NULL,
        [FaxProprietario]             NUMERIC (15)  NULL,
        [EmailProprietario]           VARCHAR (50)  NULL,
        [SitoProprietario]            VARCHAR (50)  NULL,
        [NoteProprietario]            VARCHAR (500) NULL,
        [IndirizzoLavoro]             VARCHAR (50)  NULL,
        [CivicoLavoro]                VARCHAR (10)  NULL,
        [ComuneLavoro]                VARCHAR (50)  NULL,
        [ProvinciaLavoro]             CHAR (2)      NULL,
        [CapLavoro]                   NUMERIC (5)   NULL,
        [TipoFattura]                 VARCHAR (50)  NULL,
        [Piano]                       VARCHAR (5)   NULL,
        [Interno]                     VARCHAR (5)   NULL,
        [Scala]                       VARCHAR (5)   NULL,
        [c1]                          VARCHAR (50)  NULL,
        [c2]                          VARCHAR (50)  NULL,
        [c3]                          VARCHAR (50)  NULL,
        [c4]                          VARCHAR (50)  NULL,
        [c5]                          VARCHAR (50)  NULL,
        PRIMARY KEY CLUSTERED ([Id_Lavorazione] ASC)
    );


    ma non c'è un cambiamento apprezzabile...

    Ho effettuato un controllo...ho notato che quando l'esecuzione passa

     Me.Validate()
            Me.Table_LavorazioniBindingSource.EndEdit()
           ---> Me.TableAdapterManager.UpdateAll(Me.Database_GestioneDataSet)

    sul punto evidenziato  qui si genera il rallentamento, quindi penso che sia proprio sul database.....o le tabelle....non so..

    -------------------------------------------------------------------------------------------------------------------------------

    Ho fatto una seconda prova, ho provato a modificare il codice di salvataggio:

     Me.Validate()
            Me.Table_LavorazioniBindingSource.EndEdit()
            'Me.TableAdapterManager.UpdateAll(Me.Database_GestioneDataSet)
    
            Me.Table_LavorazioniTableAdapter.Update(Me.Database_GestioneDataSet.Table_Lavorazioni)
    funziona il salvataggio...ma i tempi sono gli stessi....

    • Modificato Guido.G domenica 24 agosto 2014 13:52 correzione
    sabato 23 agosto 2014 08:05
  • Nessuno ha uno spunto per risolvere il problema?..... :-(
    martedì 26 agosto 2014 20:23

  • Diciamo che molti dei campi sono stringhe ma anche altri non lo sono. (Ho impostato tutto in questo modo pensando che non facesse tutta questa differenza...da profano....mi sembra di capire che innanzitutto dovrei sistemare queste cose,utilizzare i campi giusti...quali mi consiglieresti per campi testo, numero? ho visto che c'è molte possibilità considerando che non è conosciuta la lunghezza di alcuni campi.

    dipende molto da quello che hai come modello. Fondamentalmente il principio è scegliere il tipo di dato più piccolo per il valore più grande della colonna. Ad esempio, un campo sull'età di una persona non sarà mai intero a 4 byte (per sfortuna :) ) ma ti basterà un tinyint (che ne occupa uno solo). Per un campo di cui conosci la lunghezza sempre ed essa è sempre la stessa, userai char e non la sua forma variabile, perchè risparmi sia l'occupazione in più per l'offset sia la cpu per l'algoritmo di valutazione della lunghezza effettiva del campo. I codici di solito possono essere numerici (surrogati), così ti eviti l'occupazione delle stringhe superiori di 4 byte (per certi codici di lookup a volte ti basta un byte).

    Diciamo che dimensionare bene ti consente di contenere le operazioni di I/O, che sono uno dei punti cruciali per i principali problemi di performance.

    -Intendo che creo un record, immetto i dati nei campi e dal momento che salvo i dati devo attendere minimo 5 ..6 sec prima che l'applicazione abbia finito di fare le operazioni.

    Ok quindi parliamo solo di un record.

    3) database è in AUTO CLOSE 

    - Per quanto riguarda se il database è di questo tipo ...non saprei se mi dai un indizio come poterlo riscontrare ti do anche questa notizia...

    con questa:

    SELECT DATABASEPROPERTYEX('Nome tuo db','IsAutoClose')



    - La routine di salvataggio di una parte è questa:

    Io vedo solo funzioni che spostano la barra. Quindi credo che sia il salvataggio solamente.


    - Per quanto riguarda la versione di SQL...non so come fare per fartelo sapere, mentre per il tipo di database, questa è la stinga di connessione e se non sbagli è .."LocalDB"

    Ok, di solito quel db ha un timeout per cui fa auto shutdown. Se lanci l'inserimento più volte, vanno tutte lente o solo la prima? Per più volte, intendo più volte nella stessa routine.


    Nel tentativo di modificare il tipo di carattere nelle query ho letto questo:

    Nota importante Importante I tipi di dati ntext, text e image verranno rimossi a partire da una delle prossime

    versioni di Microsoft SQL Server. Evitare di utilizzare questi tipi di dati in un

    nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni

    che attualmente li utilizzano.

    Utilizzare nvarchar(max), varchar(max) e varbinary(max) in alternativa.

    http://msdn.microsoft.com/it-it/library/ms187993.aspx

    ma non c'è un cambiamento apprezzabile...

    Ho effettuato un controllo...ho notato che quando l'esecuzione passa

     Me.Validate()
            Me.Table_LavorazioniBindingSource.EndEdit()
           ---> Me.TableAdapterManager.UpdateAll(Me.Database_GestioneDataSet)

    sul punto evidenziato  qui si genera il rallentamento, quindi penso che sia proprio sul database.....o le tabelle....non so..

    -------------------------------------------------------------------------------------------------------------------------------

    Ho fatto una seconda prova, ho provato a modificare il codice di salvataggio:

     Me.Validate()
            Me.Table_LavorazioniBindingSource.EndEdit()
            'Me.TableAdapterManager.UpdateAll(Me.Database_GestioneDataSet)
    
            Me.Table_LavorazioniTableAdapter.Update(Me.Database_GestioneDataSet.Table_Lavorazioni)

    funziona il salvataggio...ma i tempi sono gli stessi....

    Probabilmente la causa è il dataset/tableadapter. Puoi fare un progetto semplice daccapo che faccia SOLO il salvataggio di un record usando ado.net?

    Alessandro Alpi SQL Server MVP

    mercoledì 27 agosto 2014 08:00
    Moderatore
  • Ciao Alessandro, dunque:

    - I salvataggi dei record sono tutti lenti, se salvo nella stessa tabella 5 record uno dopo l'altro tutti impiegano lo stesso tempo per il salvataggio.

    - Per fare un piccolo progetto non ci sarebbe problemi...sapessi come farlo con ADO.NET....

    e vorrei comunque chiederti una cosa...non vorrei creare più confusione.. nelle tabelle del progetto avevo fatto le quesry guidate per inserimento eliminazione e il salvataggio dei dati, nelle varie prove che ho fatto ho provato ad eliminarle queste query....aggiornato il database.......e funziona anche senza le query....perchè?

    Per creare il database uso la forma guidata e se non sbagli non ho la possibilità di scegliere ADO, come origine dati mi da solo:File di DataBase Microsoft SQL SERVER e Microsoft SQL SERVER ...che sinceramente non so la differenza.

    Lo so...sono un caso patetico...

    mercoledì 27 agosto 2014 16:53
  • Ho fato questo:

    Nuovo progetto

    da menu -> Progetto ->Nuovo elemento ->Elemento di progetto per la creazione di ADO.NET Entity Data Model

    Genera da database ->Origine dati: (file di database Microsoft SQL Server) ->Entity Framework 6.0 -> Fine

    Fatto questo è apparsa la sceda:

    Model1.edmx [Diagram1]

    In esplora database ha creato due connessioni:

     ADO_Model1.mdf

     ADO_Model1.mdf1

    Ho creato due tabelle in   ADO_Model1.mdf [table1  e Tabele2]

    Su origine dati non appare nulla......

    ORA NON SO CHE FARE...... :-(

    giovedì 28 agosto 2014 05:52
  • Ciao,

    niente, se non sai scrivere con ado.net non possiamo proseguire con quel progetto. Sinceramente non so proprio dirti il perchè a questo punto.

    Se vuoi passarmi il progetto con il database posso provarlo, ma di più, se non sai farlo interamente con ado.net non so proprio che fare. Quello che stai facendo è usare entity framework che è ancora un'altra cosa..


    Alessandro Alpi SQL Server MVP

    giovedì 28 agosto 2014 08:31
    Moderatore
  • Questo è il problema d'esser auto didatta...se vuoi...posso passarti il progetto...dimmi tu...
    giovedì 28 agosto 2014 11:37
  • Passami tutto ciò che serve per ricreare il problema e vedo se riesco ad aiutarti.

    ciao!


    Alessandro Alpi SQL Server MVP

    giovedì 28 agosto 2014 12:29
    Moderatore
  • Ho caricato in formato zip il progetto in OneDrive...cartella VB
    • Modificato Guido.G giovedì 28 agosto 2014 14:11
    giovedì 28 agosto 2014 14:11
  • Ciao,
    non mi è arrivato però nessun link di onedrive. Puoi condividermi il progetto?

    Alessandro Alpi SQL Server MVP

    venerdì 29 agosto 2014 09:48
    Moderatore
  • Ok...ma per condividerlo mi chiede una mail...

    venerdì 29 agosto 2014 10:16
  • Puoi condividere il tuo file, dopo averlo selezionato, cliccando su URL di collegamento dal menu a sinistra.

    vibi6

    venerdì 29 agosto 2014 10:41
  • si...ma lo metto su pubblico...
    venerdì 29 agosto 2014 10:49
  • No, anche Sola visualizzazione va bene.

    vibi6

    venerdì 29 agosto 2014 10:57
  • Nel pensare al tipo di rallentamento, visto che vibis6...non ha rilevato nessun rallentamento nell'esecuzione del salvataggio nella scheda lavorazioni, mi chiedevo se può dipendere da ciò che ho installato per il visual studio, quindi riporto le informazioni che ho rilevato..

    Guido

    domenica 31 agosto 2014 09:20
  • Ciao,

    Il progetto non è raggiungibile. Mi spiace.


    Alessandro Alpi SQL Server MVP


    lunedì 1 settembre 2014 12:36
    Moderatore
  • Ciao Alessandro ho tenuto per molto tempo il progetto in onedrive...pensavo che tu avessi avuto tempo per prenderlo... se vuoi lo rimetterò on line questa sera e domani sera dalle 18 in poi...

    Guido

    https://onedrive.live.com/redir?resid=3BAE69A7546B6286!157&authkey=!AAE1SZ_X_DtQYJ0&ithint=file%2czip
    • Modificato Guido.G lunedì 1 settembre 2014 17:41
    lunedì 1 settembre 2014 17:33
  • Ti chiedo scusa ma proprio non ho avuto tempo.

    Fatto, cancellalo pure.


    Alessandro Alpi SQL Server MVP

    martedì 2 settembre 2014 07:07
    Moderatore
  • Nessuno problema...mille grazie di dare un'occhiata.. :-)

    martedì 2 settembre 2014 10:57
  • Come temevi.. Non ho un problema. Va veloce e non sembra rallentare su nessua operazione.
    C'è da capire se non fosse quell'access che sia "bloccato".
    Antivirus, antimalware che girano e che monitorizzano quella cartella?
    Sinceramente non ho altre cartucce. Sembra proprio un problema legato alla tua macchina.. Non saprei che altro aggiungere.

    Alessandro Alpi SQL Server MVP

    • Contrassegnato come risposta Guido.G mercoledì 3 settembre 2014 16:25
    mercoledì 3 settembre 2014 08:05
    Moderatore
  • ok...mille grazie Alessandro cercherò in qualche modo di verificare.

    Guido

    mercoledì 3 settembre 2014 16:17