Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Турист
Member

Откуда:
Сообщений: 506
NEWID() создаёт уникальное значение для сервера или для базы?
18 окт 13, 13:44    [14998121]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Для вселенной.
18 окт 13, 13:47    [14998159]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Турист
Member

Откуда:
Сообщений: 506
не понял - поясните
18 окт 13, 13:48    [14998165]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Турист
не понял - поясните

If an application must generate an identifier column that is unique across the database, or every database on every networked computer in the world, use the uniqueidentifier data type and the NEWID or NEWSEQUENTIALID() function.
18 окт 13, 13:51    [14998188]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
В хелпе написано, что "The UUID is guaranteed to be unique to this computer only".
Поэтому "уникальное значение для сервера".
18 окт 13, 13:52    [14998197]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Турист
Member

Откуда:
Сообщений: 506
NEWID() подходит для уникальности в пространстве всех компов всего мира?
18 окт 13, 13:53    [14998206]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Турист
Member

Откуда:
Сообщений: 506
то есть NEWID() создаёт уникальное значение для сервера.

Правильно я понял?
18 окт 13, 13:57    [14998236]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Турист
то есть NEWID() создаёт уникальное значение для сервера.

Правильно я понял?

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. Each network card has a unique identification number. 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.
18 окт 13, 14:00    [14998252]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Турист
Member

Откуда:
Сообщений: 506
Всем спасибо
18 окт 13, 14:06    [14998304]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
http://technet.microsoft.com/en-us/library/ms190215(v=sql.105).aspx
The uniqueidentifier value that is returned by NEWID is generated by using the network card on the server.


UuidCreate для инициализации использует функцию RtlGenRandom ( http://www.gotdotnet.ru/blogs/denish/1965/ )

Про RtlGenRandom:

http://ru.wikipedia.org/wiki/CryptGenRandom
Microsoft используют одну реализацию CryptGenRandom, основанную на некоторой встроенной функции «RtlGenRandom».[2] В 2007 годы был обнародован лишь общий набросок работы этого алгоритма:
[RtlGenRandom] создает как указано в FIPS 186-2 приложение 3.1, используя SHA-1 в качестве G-функции. Источниками для энтропии являются:
ID текущего процесса.
ID текущей нити исполнения.
Число тактов с момента последней загрузки.
Текущее время.
Различные высокоточные счётчики.
Хэш-функции MD4 от персональных данных пользователя, таких как логин, имя компьютера, и др.
Высокоточные внутрипроцессорные счётчиков, таких как RDTSC, RDMSR, RDPMC.
[опущено: длинный список низкоуровневых информационных элементов и счётчиков] Источник: Writing Secure Code, Second Edition. isbn=0-7356-1722-8.


Никаких network card там нет уже давно.

Сообщение было отредактировано: 18 окт 13, 14:20
18 окт 13, 14:18    [14998377]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Турист
NEWID() подходит для уникальности в пространстве всех компов всего мира?
Да.
18 окт 13, 15:07    [14998717]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гавриленко Сергей Алексеевич
http://technet.microsoft.com/en-us/library/ms190215(v=sql.105).aspx
The uniqueidentifier value that is returned by NEWID is generated by using the network card on the server.


UuidCreate для инициализации использует функцию RtlGenRandom ( http://www.gotdotnet.ru/blogs/denish/1965/ )

Про RtlGenRandom:

http://ru.wikipedia.org/wiki/CryptGenRandom
Microsoft используют одну реализацию CryptGenRandom, основанную на некоторой встроенной функции «RtlGenRandom».[2] В 2007 годы был обнародован лишь общий набросок работы этого алгоритма:
[RtlGenRandom] создает как указано в FIPS 186-2 приложение 3.1, используя SHA-1 в качестве G-функции. Источниками для энтропии являются:
ID текущего процесса.
ID текущей нити исполнения.
Число тактов с момента последней загрузки.
Текущее время.
Различные высокоточные счётчики.
Хэш-функции MD4 от персональных данных пользователя, таких как логин, имя компьютера, и др.
Высокоточные внутрипроцессорные счётчиков, таких как RDTSC, RDMSR, RDPMC.
[опущено: длинный список низкоуровневых информационных элементов и счётчиков] Источник: Writing Secure Code, Second Edition. isbn=0-7356-1722-8.


Никаких network card там нет уже давно.


как же так? а майкрософт пишет, что есть.... в частности тут были темы недавно по NEWSEQUENTIALID()
18 окт 13, 15:09    [14998732]     Ответить | Цитировать Сообщить модератору
 Re: NEWID() создаёт уникальное значение для сервера или для базы?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Winnipuh
как же так? а майкрософт пишет, что есть.... в частности тут были темы недавно по NEWSEQUENTIALID()
Про RtlGenRandom она ничего не пишет по вполне определенным причинам.

А про UuidCreateSequential никто ничего не говорил.

Сообщение было отредактировано: 18 окт 13, 15:13
18 окт 13, 15:13    [14998761]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить