Udostępnij za pośrednictwem


Using User-defined Types Across Databases

Po utworzeniu typ zdefiniowany przez użytkownika jest lokalny do jednej bazy danych.Dlatego typ zdefiniowany przez użytkownika w jednej bazie danych nie można użyć w definicji kolumna z innej bazy danych.Jednak jeśli ten sam typ zdefiniowany przez użytkownika jest zarejestrowany i są dostępne w dwóch baz danych, można przekonwertować wartości typu zdefiniowanego przez użytkownika z jednej bazy danych do użycia w innej bazie danych.Ta możliwość jest przydatne, gdy chcesz wykonać następujące czynności:

  • Wywołanie procedura przechowywana, która jest zdefiniowana w innej bazie danych.

  • Kwerendy za pośrednictwem tabel, które są zdefiniowane w dwóch różnych baz danych.

  • Wybierz dane z bazy danych i wstawić go do innego.

Na przykład załóżmy, że u1 ten typ zdefiniowany przez użytkownika jest tworzony w db1 bazy danych i Degresywna bazy danych.P2 procedura przechowywana jest tworzona tylko w Degresywna bazy danych i przyjmuje parametr u1 typu.P ' proc z wystąpienie typu u1 można wywołać z db1 bazy danych.

USE db1
DECLARE @u u1
EXEC db2.dbo.p2 @u
GO

Innym przykładem polega na wypełnianie tabela tymczasowa tempdb z wyniki kwerendy.Typ zdefiniowany przez użytkownika muszą być zarejestrowane w tempdb dla tej operacji było poprawne.

INSERT INTO #t SELECT * FROM T 

Typ zdefiniowany przez użytkownika w rejestracji tempdb nie jest wymagane, użyj typu zdefiniowanego przez użytkownika w zmiennej Tabela, lub gdy kursor używany typ zdefiniowany przez użytkownika worktable.

Korzystając z typów zdefiniowanych przez użytkownika w bazach danych, należy pamiętać, następujące czynności:

  • Typy muszą mieć taką samą nazwę, łącznie z tej samej nazwie środowiska CLR i musi być zaimplementowana za pomocą tego samego wirtualny plik dziennika w obu baz danych.Zestawy w dwie bazy danych są identyczne, jeśli mają takiej samej nazwie, silnej nazwy, kultury, wersja, uprawnienia dostępu do kodu zestaw wraz z zawartością binarne.

  • Musisz mieć SELECT i wykonać uprawnień w każdej kolumna typ zdefiniowany przez użytkownika, do którego odwołuje się kwerenda.Uprawnienia te są sprawdzane w odniesieniu do bazy danych, w którym każda kolumna jest zdefiniowany.

  • Jeśli typ, który zaimplementowano w jednym zestawie wywołuje metoda w innym zestawie, wywołania między wirtualny plik dziennika jest sprawdzany w taki sam sposób, jak w przypadku kwerendy typ zdefiniowany przez użytkownika zostały wydane bez przekraczania baz danych.