Uniqueidentifier veri kullanma

The uniqueidentifier data type stores 16-byte binary values that operate as globally unique identifiers (GUIDs).Bir GUID benzersiz bir ikili sayıdır; dünyada başka bir bilgisayar Bu GUID değeri bir kopyasını oluşturur.Ana bir GUID için birçok sitede birçok bilgisayarların bulunduğu bir ağda benzersiz bir tanıtıcı atamak için kullanılır.

Bir GUID değeri için bir uniqueidentifier sütun genellikle elde edilir aşağıdaki yollardan biriyle:

  • İçinde bir Transact-SQL deyim, toplu iş iş iş veya komut dosyası çağırarak NEWID işlev.

  • Uygulama kodu, uygulama API işlev ya da yöntem çağırarak, bir GUID döndürür.

The Transact-SQL NEWID function and the application API functions and methods generate new uniqueidentifier values from the identification number of their network card plus a unique number from the CPU clock.Her ağ kartı benzersiz bir kimlik numarası vardır.The uniqueidentifier value that is returned by NEWID is generated by using the network card on the server.The uniqueidentifier value returned by application API functions and methods is generated by using the network card on the client.

A uniqueidentifier değeri genellikle tanımlı değil gibi bir sabit.Sizin belirlediğiniz bir uniqueidentifier aşağıdaki yöntemlerle sabit:

  • Karakter dize biçimi: '6F9619FF-8B86-D011-B42D-00C04FC964FF'

  • İkili dosya biçimi: 0xff19966f868b11d0b42d00c04fc964ff

The uniqueidentifier data type does not automatically generate new IDs for inserted rows in the way the IDENTITY property does.Yeni almak Örneğin, uniqueidentifier değerleri, bir tablo olması gerekir bir DEFAULT yan tümce tümce tümce belirtme NEWID veya NEWSEQUENTIALID işlev veya INSERT ifadeleri kullanması gerekir NEWID işlev.

CREATE TABLE MyUniqueTable
   (UniqueColumn   UNIQUEIDENTIFIER      DEFAULT NEWID(),
   Characters      VARCHAR(10) )
GO
INSERT INTO MyUniqueTable(Characters) VALUES ('abc')
INSERT INTO MyUniqueTable VALUES (NEWID(), 'def')
GO

Not

Sayfa çekişme dizinler yaprak düzey azaltmak için GUID üretmek için NEWSEQUENTIALID kullanabilirsiniz.NEWSEQUENTIALID, yalnızca varsayılan kısıtlamalar tablo sütun türü ile kullanılabilecek uniqueidentifier.

uniqueidentifierbirden fazla kopyasını tek bir sütun içerebilir uniqueidentifier değeri, benzersiz veya birincil anahtar kısıtlamaları da için sütun belirtilen süreceBaşvuran yabancı anahtar sütununa bir uniqueidentifier başka bir birincil anahtar tablo birden fazla kopyasını tek sahip olacak uniqueidentifier birden çok satır kaynağındaki aynı birincil anahtar başvuru yaptığınızda değerleri tablo.

A tablo çok olabilir uniqueidentifier sütunlar.Bir uniqueidentifier her tablo için sütun ile belirtilebilirROWGUIDCOL özellik. ROWGUIDCOL özellik gösterir uniqueidentifier değerler sütun tanıtan satırlar tablo.Ancak, özellik bu zorlamak için hiçbir şey yapmaz.PRIMARY key kısıtlaması sütun belirtme gibi diğer mekanizmalarını kullanarak benzersiz Zorlanmış olmalıdır.The ROWGUIDCOL property is primarily used by Microsoft SQL Server replication.Birleştirme çoğaltma ve işlem çoğaltma güncelleştirme abonelikleri kullanımı olan uniqueidentifier sütunları, satırları benzersiz olarak tanımlanır üzerinden birden çok kopyasını emin oluntablo.

The uniqueidentifier data type has the following disadvantages:

  • Uzun ve örtüyor değerlerdir.Bu bunları kullanıcıların doğru yazın ve anımsanması kullanıcılar için daha zor hale getirir.

  • Değerleri, rasgele ve bunları daha kullanıcılara anlamlı tüm desenleri kabul edemiyor.

  • Hangi sırayla belirlemek için bir yolu yoktur uniqueidentifier üretilmiş değerler kullanarak.Anahtar değerleri artırma üzerinde seri olarak bağlı olan var olan uygulamalar için uygun değillerdir.

  • 16 Bayt uniqueidentifier veri türü olan gibi diğer veri türleri oldukça büyük4 baytlık tamsayı. Kullanılarak oluşturulan dizinler yani uniqueidentifier tuşlarını kullanarak dizinleri görece daha yavaş olabilir bir int anahtar.

Genel zaman benzersizlik gerekli değildir veya ne zaman bir seri olarak artan anahtar olması tercih edilen kimlik özellik kullanmayı düşünün.