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

Откуда:
Сообщений: 758
Есть общая база пользователей на главном сайте.
На других сайтах в некоторых таблицах должен быть внешний ключ на поле UserID, которое находится в базе на главном сайте.
Как такое осуществить?
30 ноя 09, 21:55    [7999075]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
DRI применима только в пределах одной бд. Не совсем понятно, причем здесь сайты, но между базами ссылочную целостность можно поддерживать только триггерами.
1 дек 09, 08:20    [7999932]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Darooma
Member

Откуда:
Сообщений: 758
pkarklin
DRI применима только в пределах одной бд. Не совсем понятно, причем здесь сайты, но между базами ссылочную целостность можно поддерживать только триггерами.

Да, тригерами, но как? Создать на CLR тригер, который вызывает службу, возращающую внешний ключ в главной базе. НО. CLR на хостинге запрещен.
2 дек 09, 08:28    [8005828]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darooma
pkarklin
DRI применима только в пределах одной бд. Не совсем понятно, причем здесь сайты, но между базами ссылочную целостность можно поддерживать только триггерами.

Да, тригерами, но как?

Руками, как же еще. Прямо так и набираете CREATE TRIGGER или далее согласно синтаксису
2 дек 09, 10:29    [8006488]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Darooma
Member

Откуда:
Сообщений: 758
Ну-ка, ну-ка. Как же ты собирашься получать внешний ключ с главной базы данных на другом сайте?
2 дек 09, 12:58    [8007753]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darooma
Ну-ка, ну-ка. Как же ты собирашься получать внешний ключ с главной базы данных на другом сайте?

Разумеется запросом SELECT. Разве можно как то по другому ?
2 дек 09, 13:00    [8007764]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Darooma
Да, тригерами, но как? Создать на CLR тригер, который вызывает службу, возращающую внешний ключ в главной базе. НО. CLR на хостинге запрещен.


Используйте то, что разрешено.

Darooma
Ну-ка, ну-ка. Как же ты собирашься получать внешний ключ с главной базы данных на другом сайте?


Не "ну-кай", не запряг! С архитектурой систем следует разбираться до, а не после ее создания.
2 дек 09, 13:00    [8007767]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Darooma
Member

Откуда:
Сообщений: 758
Glory
Darooma
Ну-ка, ну-ка. Как же ты собирашься получать внешний ключ с главной базы данных на другом сайте?

Разумеется запросом SELECT. Разве можно как то по другому ?

Покажи на примере.
2 дек 09, 13:34    [8008015]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Darooma
Member

Откуда:
Сообщений: 758
Darooma
Ну-ка, ну-ка. Как же ты собирашься получать внешний ключ с главной базы данных на другом сайте?


Не "ну-кай", не запряг! С архитектурой систем следует разбираться до, а не после ее создания.[/quot]
Ха-ха-ха.
2 дек 09, 13:35    [8008025]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darooma
Glory
Darooma
Ну-ка, ну-ка. Как же ты собирашься получать внешний ключ с главной базы данных на другом сайте?

Разумеется запросом SELECT. Разве можно как то по другому ?

Покажи на примере.

Мда. SELECT * FROM otherdatabase.otherschema.othertable
2 дек 09, 13:35    [8008027]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Darooma
Ха-ха-ха.


"Хорошо смеется тот, кто смеется последним"
2 дек 09, 13:40    [8008075]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Darooma
Member

Откуда:
Сообщений: 758
Glory
Darooma
Glory
Darooma
Ну-ка, ну-ка. Как же ты собирашься получать внешний ключ с главной базы данных на другом сайте?

Разумеется запросом SELECT. Разве можно как то по другому ?

Покажи на примере.

Мда. SELECT * FROM otherdatabase.otherschema.othertable

Базы данных на РАЗНЫХ САЙТАХ.
2 дек 09, 14:50    [8008626]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Darooma
Member

Откуда:
Сообщений: 758
pkarklin
Darooma
Ха-ха-ха.


"Хорошо смеется тот, кто смеется последним"

Последним смеется тот, кто не врубился сразу.
2 дек 09, 14:51    [8008636]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darooma

Базы данных на РАЗНЫХ САЙТАХ.

Хорошо хоть не в разных вселенных

SELECT * FROM mylinkedserver.otherdatabase.otherschema.othertable
2 дек 09, 14:51    [8008639]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Darooma
Member

Откуда:
Сообщений: 758
Glory, не видел такого синтаксиса. Попробую.
2 дек 09, 18:05    [8010265]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Glory
Member

Откуда:
Сообщений: 104751
Darooma
Glory, не видел такого синтаксиса. Попробую.

Попробовать то вы попробуете, только вот хостер опять скажет, что не сможет вам разрешить доступ к внешним серверам с хостинга
2 дек 09, 18:10    [8010295]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Darooma
Glory, не видел такого синтаксиса. Попробую.


И в руках себя попробуйте держать...
2 дек 09, 21:57    [8011003]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
Darooma
Member

Откуда:
Сообщений: 758
Glory
Darooma
Glory, не видел такого синтаксиса. Попробую.

Попробовать то вы попробуете, только вот хостер опять скажет, что не сможет вам разрешить доступ к внешним серверам с хостинга

Вполне может быть. Есть ли альтернатива?
5 дек 09, 18:51    [8024368]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8879
Darooma
Glory
Darooma
Glory, не видел такого синтаксиса. Попробую.

Попробовать то вы попробуете, только вот хостер опять скажет, что не сможет вам разрешить доступ к внешним серверам с хостинга

Вполне может быть. Есть ли альтернатива?

Варианты выхода (как испрашивалось, чур без обид):
Книжку почитать, попить пива с хостером, зафигачить сайт на своём компе или получить сервак хотябы на условиях coallocation, перефигачить систему, УбиццаАпСтену, если очень зудит или начальство нашершавило швабру - помазацца мазию (для последнего случая и вазелин сойдёть).

Удачи!
6 дек 09, 03:32    [8024942]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Внешний ключ на в другой базе  [new]
hommforever
Member

Откуда:
Сообщений: 20
У меня возникла такая же проблема как у автора. Я пока вижу два пути решения.
1) как и было указано триггером (только я бы наверное лучше функцию булеву на сервере создал и передавал бы в неё id чтобы результат селекта по инету не кидать, ну или Exists и т.п.), это решение достаточно очевидно
2) сделать репликацию таблицы с сервера на клиента и навесить на полученную в результате репликации таблицу внешний ключ.

второго решения я честно говоря нигде особо не видел, почему то на подобных форумах оно не предлагается.
хотелось бы чтобы кто то "из опытных" оценил такой подход, чем он грозит при дальнейшем развитии системы и т.п.
или быть может у такого подхода есть другие подводные камни о которых мне неизвестно?
29 дек 11, 08:13    [11843537]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
aleks2
Guest
2) сделать репликацию таблицы с сервера на клиента и навесить на полученную в результате репликации таблицу внешний ключ

Минусы:
Репликация требует изрядных ресурсов.

Плюсы:
Будет работать быстрее.
Будет работать при недоступности главного серванта.
29 дек 11, 09:05    [11843655]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
hommforever
Member

Откуда:
Сообщений: 20
aleks2,

хм, настроил репликацию, добавил внешние ключи. вроде все ок. тока вот когда я пытаюсь накосячить с таблицами в базе приёмнике, мне ничего не удается (ещё бы, внешний ключ работает), а когда я допустим удаляю строчку из базы источника, то через несколько секунд после удаления на главном сервере строчка пытается удалиться с базы приёмника, внешний ключ срабатывает и репликация падает!

я понимаю что это логично, просто я думал что существует нечто вроде "синхронной репликации", которая сначала запишет все в приёмники а потом уже основной инсерт или делит сделает.
в параметрах репликации я нашел только время задержки (типа как часто простукиваются изменения)

выходит что репликация все же не подходит для данной задачи?

К сообщению приложен файл. Размер - 15Kb
4 янв 12, 07:22    [11857259]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
invm
Member

Откуда: Москва
Сообщений: 9837
hommforever, см. опцию NOT FOR REPLICATION у FK.
4 янв 12, 09:32    [11857301]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
hommforever
Member

Откуда:
Сообщений: 20
invm, я репликацию специально для этого и делаю. чтобы FK не дал мне сделать delete на источнике и/или insert на приёмнике.
а в итоге падает сама репликация, вместо того чтобы "уронить" insert/delete.

видимо придется архитектуру самой системы менять чтобы исключить нужду в подобных махинациях, другого выхода я пока не вижу..
4 янв 12, 10:12    [11857331]     Ответить | Цитировать Сообщить модератору
 Re: Внешний ключ на в другой базе  [new]
invm
Member

Откуда: Москва
Сообщений: 9837
hommforever
invm, я репликацию специально для этого и делаю. чтобы FK не дал мне сделать delete на источнике и/или insert на приёмнике.
а в итоге падает сама репликация, вместо того чтобы "уронить" insert/delete.

видимо придется архитектуру самой системы менять чтобы исключить нужду в подобных махинациях, другого выхода я пока не вижу..
Репликация это средство тиражирования данных, а не контроля целостности. Так что ваш вывод абсолютно верный -- меняйте архитектуру.
4 янв 12, 13:34    [11857767]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить