Domanda

  

Eventuali duplicati:
   chiavi di database / UUID GUID

Ci sono circostanze in cui è indispensabile utilizzare i GUID come chiavi primarie in uno SQL Server 2005/8 DB. Ad esempio, fa l'uso della forza MS Sync Framework questo, o la replica dei dati?

È stato utile?

Soluzione

Si potrebbe utilizzare GUID come chiave se si ha bisogno di più database sincronizzazione attraverso la replica.

Un altro motivo per usare GUID è se si voleva creare righe su alcuni client remoto ad esempio un'applicazione WinForms e poi le sottopone al server tramite servizi Web, ecc.

Se si esegue questa operazione Vorrei suggerire che è assicurarsi di specificare il proprio indice cluster sulla base di un'incrementazione int auto che non è unica. Può essere notevolmente costoso inserimento di righe in una tabella in cui l'indice cluster è un GUID.

Aggiornamento: Ecco un esempio di come impostare una tabella come questa:

CREATE TABLE [dbo].[myTable](
[intId] [int] IDENTITY(1,1) NOT NULL,
[realGuidId] [uniqueidentifier] NOT NULL,
[someData] [varchar](50) NULL,
    CONSTRAINT [PK_myTable] UNIQUE NONCLUSTERED 
    (
   [realGuidId] ASC
    )
)

CREATE CLUSTERED INDEX [IX_myTable] ON [dbo].[myTable] 
(
[intId] ASC
)

Si potrebbe inserire nella tabella come per esempio normale:.

INSERT INTO myTable VALUES(NEWID(), 'Some useful data goes here')

Aggiornamento: ho ascoltato davvero un buon episodio dotnetrocks che parla di questo suo valore un ascolto - Show # 447

Altri suggerimenti

Sto usando GUID come chiavi primarie, perché io non voglio avere le chiavi primarie composite quando sto costruendo applicazioni con database distribuiti e un database centrale che è sincronizzato con i dati provenienti da tutti quelli distribuiti. Con GUID Sono sicuro che (quasi *) non avrò un conflitto (violazione di un vincolo) quando tiro dati provenienti da tutti i DB in quella centrale.

* è altamente improbabile che hanno lo stesso GUID generato in due posti diversi, ma non impossibile.

Quando il database non è centralizzata o parte della collezione viene eseguita in remoto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top