Столбец GUID строки MS SQL Server - PullRequest
29 голосов
/ 14 декабря 2010

Я прошу прощения за вопрос, который кажется утомительным, но ни один ответ форума или документация, которую я прочитал, кажется, не дает адекватного ответа.

Какова цель свойства Row GUID Column в MS SQL Server 2008?

Позвольте мне остановиться на этом. Я видел «Не использовать GUID в качестве PK», повторяемый как ответ на этот вопрос, который, кажется, совершенно не связан со мной. Если я установлю Row GUID Column, заставляет ли этот столбец GUID быть первичным ключом или что-то в этом роде?

Перефразируя мой первоначальный вопрос: если в моей таблице есть столбец GUID, который не играет никакой роли в индексировании, могу ли я получить какую-либо выгоду от установки этого столбца GUID в качестве Row GUID Column?

Ответы [ 5 ]

36 голосов
/ 14 декабря 2010

Позволяет использовать переменную $ ROWGUID вместо имени столбца.Он используется в основном для репликации слиянием.Это не заставляет столбец GUID для PK, вы можете только объявить PK явно.Ответ на ваш последний вопрос - нет, если вы не планируете внедрение репликации слиянием.

8 голосов
/ 14 декабря 2010

ROWGUIDCOLUMN используется в основном в сценариях репликации, где необходимо объединить содержимое таблиц нескольких спутниковых баз данных в одну центральную БД.

Добавление ROWGUIDCOLUMN к реплицируемым таблицам гарантирует, что механизм репликации может использовать поле ROWGUIDCOLUMN для различения записей с одинаковыми значениями первичного ключа.

Поскольку эта функция используется главным образом длягладкая репликация, вы должны избегать использования этого столбца в качестве основного ключа.Ваш первичный ключ должен быть логическим бизнес-объектом, который находится под вашим контролем и не влияет на эксплуатационные характеристики определенных функций выбранного вами механизма БД.

2 голосов
/ 14 декабря 2010

Столбец RowGUID используется для репликации.Это позволяет механизму репликации сливаться правильно.Когда репликация включена, этот столбец будет добавлен в таблицы, в которых еще нет столбца RowGUID.

Вы не получите ничего, если будете использовать его, если не планируете реализовать репликацию.Это эквивалентно установке newsequentialid () в качестве значения по умолчанию для столбца.

0 голосов
/ 14 декабря 2010

Нет, это не заставляет его как ПК. Это означает, что вы не можете создать второй уникальный идентификатор и указать его как столбец GUID строки

0 голосов
/ 14 декабря 2010

Он не является первичным ключом, свойство просто определяет, будет ли поле автоматически обновляться. Если вы хотите создать GUID в приложении и отправить его, установите для этого свойства значение false, в противном случае установите для него значение true и дайте базе данных создать его автоматически. Если поле является кластеризованным индексом, убедитесь, что значением по умолчанию является NEWSEQUENTIALID ().

...