2012-03-06 46 views
7

我有一個數據庫,它包含我在多個數據庫中使用的常用函數。其中一個函數以表格作爲用戶定義的TYPE的參數。我想知道是否有方法從另一個數據庫調用此函數。跨數據庫的用戶定義類型

我試圖在其他數據庫中定義的類型,如下所示:

DECLARE @bits as Common.dbo.Bits 

但是我接收到錯誤太多前綴

我曾嘗試添加TYPE給每個數據庫,然後通過一個該類型在公共數據庫功能的表,但我得到

操作數類型衝突的錯誤:位與位

不兼容3210
+0

不能創建在所有其他數據庫所需要的類型,作爲dB一安裝過程的一部分? – vulkanino 2012-03-06 10:33:50

+0

@vulkanino我可以,但正如我所看到的,他們不是相同的類型 – Bauer 2012-03-06 14:46:32

+0

這很有趣,差不多一年後,我又回到了同樣的錯誤。這一次是不同的模式 – Bauer 2013-02-18 22:43:07

回答

6

你不能。即使您在兩個數據庫中聲明類型相同,它們的處理方式也不盡相同。而DECLARE語句只允許一個模式名稱和一個對象名稱,所以沒有辦法從另一個數據庫中引用一個類型。

參見this question了一些可能的變通(如果你控制涉及兩個數據庫)

+2

不幸的是,這不是我想聽到的答案。謝謝 – Bauer 2012-04-23 07:47:28

+0

@Damien_The_Unbeliever微軟這樣做不是奇怪嗎?這有點像在C#中,你不能使用文件中的類,除非它位於當前目錄內的文件中。 – Kulingar 2013-07-31 23:24:34

+0

@Kulingar - 如果你在兩個不同的程序集中工作,並且你創建了兩個具有相同(完整)名稱和成員的類型,你仍然不能用另一個(直接)替換另一個類型。 – 2013-08-01 05:39:30

5

根據Creating User-Defined Data Types

如果用戶定義的數據類型是在模型數據庫創建,它 存在於所有新的用戶定義的數據庫。但是,如果在用戶定義的數據庫中創建的數據類型爲 ,則該數據類型僅存在於該用戶定義的數據庫的 中。

+0

模型數據庫的確如此,但我不認爲它們是相同的類型。此外,我正在使用現有的數據庫。 – Bauer 2012-03-06 14:44:55

相關問題