Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 跨数据库的用户定义类型_Sql Server 2008_Tsql_User Defined Functions - Fatal编程技术网

Sql server 2008 跨数据库的用户定义类型

Sql server 2008 跨数据库的用户定义类型,sql-server-2008,tsql,user-defined-functions,Sql Server 2008,Tsql,User Defined Functions,我有一个数据库,其中包含我在多个数据库中使用的常用函数。其中一个函数将表作为用户定义类型的参数。我想知道是否有办法从另一个数据库调用此函数 我尝试在其他数据库中定义类型,如下所示: DECLARE @bits as Common.dbo.Bits 但是,我收到了一个错误,前缀太多 我曾尝试将该类型添加到每个数据库中,然后将该类型的表传递给公共数据库中的函数,但在那里我得到了一个错误 操作数类型冲突:位与位不兼容 根据: 如果在模型数据库中创建了用户定义的数据类型,则 存在于所有新的用户定义数据

我有一个数据库,其中包含我在多个数据库中使用的常用函数。其中一个函数将表作为用户定义类型的参数。我想知道是否有办法从另一个数据库调用此函数

我尝试在其他数据库中定义类型,如下所示:

DECLARE @bits as Common.dbo.Bits
但是,我收到了一个错误,前缀太多

我曾尝试将该类型添加到每个数据库中,然后将该类型的表传递给公共数据库中的函数,但在那里我得到了一个错误

操作数类型冲突:位与位不兼容

根据:

如果在模型数据库中创建了用户定义的数据类型,则 存在于所有新的用户定义数据库中。但是,如果数据类型为 在用户定义的数据库中创建,数据类型仅存在于该数据库中 用户定义的数据库


你不能。即使在两个数据库中声明相同的类型,它们也不会得到相同的处理。而且
DECLARE
语句只允许使用模式名和对象名,因此无法从其他数据库引用类型


另请参阅一些可能的解决方法(如果您同时控制两个相关数据库)

作为db first安装过程的一部分,您不能在其他数据库中创建所有需要的类型吗?@vulkanino我可以,但正如我所看到的,它们不是相同的类型。有趣的是,差不多一年后,我又遇到了同样的错误。这一次是不同的模式关于模型数据库是正确的,但我不认为它们是相同的类型。此外,我正在使用现有的数据库。不幸的是,这不是我想要听到的答案。感谢you@Damien_The_Unbeliever微软这样做不是很奇怪吗?这有点像是说在C#中不能使用文件中的类,除非它位于当前目录中的文件上?@Kulingar-如果您在两个不同的程序集中工作,并且创建了两个具有相同(完整)名称和成员的类型,那么您仍然不能(直接)用一个替换另一个不信者Damien_感谢你不断给出的答案,这让我在过去的一个小时里有些头疼。