2012-03-06 24 views
7

Tengo una base de datos que contiene funciones comunes que utilizo en múltiples bases de datos. Una de estas funciones toma en una tabla como un parámetro que es un TIPO definido por el usuario. Me gustaría saber si hay una forma de llamar a esta función desde otra base de datos.TIPO definido por el usuario en bases de datos

Me trataron de definir el tipo en la otra base de datos de este modo:

DECLARE @bits as Common.dbo.Bits 

Sin embargo he recibido un error demasiados prefijos

He intentado agregar el tipo para cada base de datos, y luego pasar una mesa de este tipo a la función en la base de datos común, pero no me sale un error de tipo

Operando choque: Bits es incompatible con Bits

+0

¿no puede crear todos los tipos necesarios en las otras bases de datos, como parte del proceso de primera instalación db? – vulkanino

+0

@vulkanino Puedo, pero como he visto, no son del mismo tipo – Bauer

+0

Es curioso, casi un año después y volví a este mismo error. Esta vez fueron los diferentes esquemas – Bauer

Respuesta

6

No puede. Incluso si declara el tipo de manera idéntica en dos bases de datos, no se trata de la misma manera. Y la declaración DECLARE solo está permitida con un nombre de esquema y un nombre de objeto, por lo que no hay forma de hacer referencia a un tipo desde otra base de datos.

Ver también this question para algunos arounds de trabajo posible (si el control de ambas bases de datos involucrados)

+2

Lamentablemente, esta no es la respuesta que quería escuchar. Gracias – Bauer

+0

@Damien_The_Unbeliever ¿No es extraño que Microsoft lo haga? Es como decir que en C# no puedes usar una clase de un archivo a menos que esté en un archivo dentro de tu directorio actual. – Kulingar

+0

@Kulingar: si trabaja en dos ensamblajes diferentes y crea dos tipos con nombres y miembros idénticos (completos), aún no puede sustituir uno por el otro (directamente). –

5

Según Creating User-Defined Data Types:

Si se crea un tipo de datos definido por el usuario en la base de datos modelo, se existe en todas las nuevas bases de datos definidos por el usuario. Sin embargo, si el tipo de datos es creado en una base de datos definida por el usuario, el tipo de datos solo existe en esa base de datos definida por el usuario .

+0

Es cierto sobre la base de datos Model, pero no creo que sean del mismo tipo. Además, estoy trabajando con bases de datos existentes. – Bauer

Cuestiones relacionadas