2012-03-06 3 views
7

Mam bazę danych, która przechowuje popularne funkcje, których używam w wielu bazach danych. Jedna z tych funkcji przyjmuje tabelę jako parametr, który jest zdefiniowany przez użytkownika TYPE. Chciałbym wiedzieć, czy istnieje sposób wywoływania tej funkcji z innej bazy danych.Typ zdefiniowany przez użytkownika w bazach danych

próbowałem zdefiniować typ w innej bazy danych tak:

DECLARE @bits as Common.dbo.Bits 

jednak otrzymałem błąd zbyt wiele prefiksy

Próbowałem dodając typ do każdej bazy danych, a następnie przepuszczenie stół do tego typu funkcji we wspólnej bazie danych, ale nie pojawia się błąd typu

Operand starcia: Bity jest niezgodna z bitami

+0

nie może utworzyć wszystkie potrzebne typy w innych bazach danych, jako część procesu db pierwszej konfiguracji? – vulkanino

+0

@vulkanino Mogę, ale jak widziałem, nie są one tego samego typu. – Bauer

+0

To zabawne, prawie rok później i wróciłem do tego samego błędu. Tym razem były to różne schematy. – Bauer

Odpowiedz

6

Nie możesz. Nawet jeśli zadeklarujesz typ identycznie w dwóch bazach danych, nie będą one traktowane tak samo. I instrukcja DECLARE jest dozwolona tylko nazwa schematu i nazwa obiektu, więc nie ma sposobu, aby odwołać się do typu z innej bazy danych.

Zobacz także this question dla niektórych możliwych arounds pracy (jeśli można kontrolować zarówno baz danych związanych)

+2

Niestety nie jest to odpowiedź, którą chciałem usłyszeć. Dziękujemy – Bauer

+0

@Damien_The_Unbeliever Czy nie jest to dziwne z Microsoft? To tak jakby powiedzieć, że w języku C# nie można używać klasy z pliku, chyba że znajduje się on w pliku wewnątrz bieżącego katalogu? – Kulingar

+0

@Kulingar - jeśli pracujesz w dwóch różnych złożeniach, a tworzysz dwa typy z identycznymi (pełnymi) nazwami i członkami, nadal nie możesz zastąpić jednego dla drugiego (bezpośrednio). –

5

Według Creating User-Defined Data Types:

Jeśli typ danych zdefiniowany przez użytkownika jest tworzony w modelu bazie istnieje we wszystkich nowych baz danych zdefiniowanych przez użytkownika. Jeśli jednak typ danych to utworzony w bazie danych zdefiniowanej przez użytkownika, typ danych istnieje tylko w tej zdefiniowanej przez użytkownika bazie danych.

+0

To prawda o bazie danych Modelu, ale nie sądzę, że są one tego samego typu. Poza tym pracuję z istniejącymi bazami danych. – Bauer