Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy możesz mieć klucz obcy w widoku tabeli połączonego serwera w SQLServer 2k5?

Klucze obce nie mogą być łączone z obiektami nielokalnymi - muszą odwoływać się do lokalnych tabel. Otrzymujesz błąd „maksymalna liczba prefiksów”, ponieważ odwołujesz się do tabeli za pomocą nazwy składającej się z czterech części (LinkedServer.Database.Schema.Object), a obiekt lokalny miałby tylko nazwę składającą się z trzech części.

Inne rozwiązania :

  1. Replikuj dane ze źródła (lokalizacji widoku) na ten sam serwer, co tabela, do której próbujesz dodać klucz. Możesz to robić co godzinę, codziennie lub cokolwiek, w zależności od tego, jak często zmieniają się dane źródłowe.
  2. Dodaj wyzwalacz w tabeli źródłowej, aby wypychać wszelkie zmiany w kopii lokalnej. Byłoby to zasadniczo to samo, co #1, ale z natychmiastową populacją zmian
  3. Dodaj do tabeli wyzwalacz INSTEAD OF, który ręcznie sprawdza ograniczenie klucza obcego, wybierając z połączonego serwera i porównując wartość, którą próbujesz WSTAWIĆ/AKTUALIZOWAĆ. Jeśli nie jest ona zgodna, możesz odrzucić zmianę .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. T-SQL uzyskuje węzeł główny w hierarchii

  2. Wstaw zbiorczy z parametrem nazwy pliku

  3. SQL Server:wycofanie bez ROZPOCZĘCIA TRANSAKCJI

  4. Zwróć listę tabel i widoków w SQL Server przy użyciu T-SQL (sp_tables)

  5. Jak przechowywać obrazy przy użyciu Entity Framework Code First CTP 5?