我有一個數據庫,它包含我在多個數據庫中使用的常用函數。其中一個函數以表格作爲用戶定義的TYPE的參數。我想知道是否有方法從另一個數據庫調用此函數。跨數據庫的用戶定義類型
我試圖在其他數據庫中定義的類型,如下所示:
DECLARE @bits as Common.dbo.Bits
但是我接收到錯誤太多前綴
我曾嘗試添加TYPE給每個數據庫,然後通過一個該類型在公共數據庫功能的表,但我得到
操作數類型衝突的錯誤:位與位
不兼容3210
我有一個數據庫,它包含我在多個數據庫中使用的常用函數。其中一個函數以表格作爲用戶定義的TYPE的參數。我想知道是否有方法從另一個數據庫調用此函數。跨數據庫的用戶定義類型
我試圖在其他數據庫中定義的類型,如下所示:
DECLARE @bits as Common.dbo.Bits
但是我接收到錯誤太多前綴
我曾嘗試添加TYPE給每個數據庫,然後通過一個該類型在公共數據庫功能的表,但我得到
操作數類型衝突的錯誤:位與位
不兼容3210
你不能。即使您在兩個數據庫中聲明類型相同,它們的處理方式也不盡相同。而DECLARE
語句只允許一個模式名稱和一個對象名稱,所以沒有辦法從另一個數據庫中引用一個類型。
參見this question了一些可能的變通(如果你控制涉及兩個數據庫)
根據Creating User-Defined Data Types:
如果用戶定義的數據類型是在模型數據庫創建,它 存在於所有新的用戶定義的數據庫。但是,如果在用戶定義的數據庫中創建的數據類型爲 ,則該數據類型僅存在於該用戶定義的數據庫的 中。
模型數據庫的確如此,但我不認爲它們是相同的類型。此外,我正在使用現有的數據庫。 – Bauer 2012-03-06 14:44:55
不能創建在所有其他數據庫所需要的類型,作爲dB一安裝過程的一部分? – vulkanino 2012-03-06 10:33:50
@vulkanino我可以,但正如我所看到的,他們不是相同的類型 – Bauer 2012-03-06 14:46:32
這很有趣,差不多一年後,我又回到了同樣的錯誤。這一次是不同的模式 – Bauer 2013-02-18 22:43:07