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

Откуда: Сидней
Сообщений: 1144
Добрый день, уважаемые,

Выполняю команду:
ALTER TABLE MyTable WITH CHECK CHECK CONSTRAINT My_FK


Потом проверяю ключ:
SELECT name, OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id),Is_Not_Trusted FROM sys.foreign_keys AS f Where Is_Not_Trusted = 1 and OBJECT_NAME(parent_object_id) 'MyTable'


Значение Is_Not_Trusted остается "1".

Что я делаю не так?

Спасибо.
28 сен 15, 08:41    [18202484]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Glory
Member

Откуда:
Сообщений: 104760
Roust_m
Потом проверяю ключ:
SELECT name, OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id),Is_Not_Trusted FROM sys.foreign_keys AS f Where Is_Not_Trusted = 1 and OBJECT_NAME(parent_object_id) 'MyTable'



Значение Is_Not_Trusted остается "1".


SELECT OBJECTPROPERTY(OBJECT_ID('My_FK'), 'CnstIsNotTrusted');
28 сен 15, 08:51    [18202509]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1144
Glory
Roust_m
Потом проверяю ключ:
SELECT name, OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id),Is_Not_Trusted FROM sys.foreign_keys AS f Where Is_Not_Trusted = 1 and OBJECT_NAME(parent_object_id) 'MyTable'



Значение Is_Not_Trusted остается "1".


SELECT OBJECTPROPERTY(OBJECT_ID('My_FK'), 'CnstIsNotTrusted');


Тоже "1".
28 сен 15, 09:14    [18202591]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Glory
Member

Откуда:
Сообщений: 104760
А так
ALTER TABLE table CHECK CONSTRAINT ALL
28 сен 15, 09:17    [18202599]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1144
Glory
А так
ALTER TABLE table CHECK CONSTRAINT ALL


Никакой разницы. Проверил, в столбцах ключа нет NULL значений и они не разрешены на обеих таблицах.
28 сен 15, 09:24    [18202624]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Glory
Member

Откуда:
Сообщений: 104760
Roust_m
и они не разрешены на обеих таблицах.

Может вы не те объекты проверяете ? На другой базе или схеме ?
28 сен 15, 09:26    [18202630]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1144
Glory
Roust_m
и они не разрешены на обеих таблицах.

Может вы не те объекты проверяете ? На другой базе или схеме ?


Да нет, оба запроса выполняю в том же окне в той же базе на той же инстанс:
ALTER TABLE MyTable WITH CHECK CHECK CONSTRAINT My_FK

SELECT name, OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id),Is_Not_Trusted FROM sys.foreign_keys AS f Where Is_Not_Trusted = 1 and OBJECT_NAME(parent_object_id) 'MyTable'


Схема dbo везде, поэтому схему даже не указываю.
28 сен 15, 09:45    [18202703]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Roust_m
Добрый день, уважаемые,

Выполняю команду:
ALTER TABLE MyTable WITH CHECK CHECK CONSTRAINT My_FK


Потом проверяю ключ:
SELECT name, OBJECT_NAME(parent_object_id), OBJECT_NAME(referenced_object_id),Is_Not_Trusted FROM sys.foreign_keys AS f Where Is_Not_Trusted = 1 and OBJECT_NAME(parent_object_id) 'MyTable'


Значение Is_Not_Trusted остается "1".

Что я делаю не так?

Спасибо.


Как пишет юзер "o-o" в таких случаях: покажите скриншот SSMS с этими командами.
28 сен 15, 10:52    [18203073]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1144
Winnipuh
Как пишет юзер "o-o" в таких случаях: покажите скриншот SSMS с этими командами.


Вот пожалуйста

К сообщению приложен файл. Размер - 69Kb
29 сен 15, 02:27    [18207656]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Учитывая ваши предыдущие темы, могу предположить, что у "проблемного" FK включено not for replication.
Такой constraint всегда будет not trusted.
29 сен 15, 03:24    [18207663]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1144
invm
Учитывая ваши предыдущие темы, могу предположить, что у "проблемного" FK включено not for replication.
Такой constraint всегда будет not trusted.


Да, так оно и есть. Немного почитал про это. 'not for replication' используется на подписчике, чтобы не проверять одну и ту же запись два раза, ибо она на публикующей базе проверяется. Почему тогда ключ not trusted на публикующей базе?

Также, нашел, что 'not for replication' полезно при сценарии, когда две таблицы реплицируются через разные публикации и данные могут придти на подписчик в другом порядке. Дабы не было ошибок нарушения ключа, его проверка пропускается при репликации.

Это не тот сценарий, который мы имеем. Наши таблицы в одной публикации. Получается мы можем убрать опцию 'not for replication' без особого вреда.
29 сен 15, 07:15    [18207743]     Ответить | Цитировать Сообщить модератору
 Re: Не получается сделать ключ trusted  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Roust_m
Почему тогда ключ not trusted на публикующей базе?
Это вопрос к проектировщику вашей БД.
Roust_m
Получается мы можем убрать опцию 'not for replication' без особого вреда.
Вреда будет гораздо больше, чем от not trusted FK.
Например, вот поэтому - https://support.microsoft.com/en-us/kb/238254
29 сен 15, 08:57    [18207885]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить