我有一个带有链接服务器的SQLServer到其他地方的另一个数据库。我已经在该链接服务器上创建了一个视图
create view vw_foo as select [id], [name] from LINKEDSERVER.RemoteDatabase.dbo.tbl_bar
我想以下
alter table [baz] add foo_id int not null go alter table [baz] with check add constraint [fk1_baz_to_foo] foreign key([foo_id]) references [dbo].[vw_foo] ([id]) go
但这会产生错误:“外键’fk1_baz_to_foo’引用的对象’dbo.vw_foo’不是用户表。”
如果我尝试使用以下命令将外键直接放在桌子上
alter table [baz] with check add constraint [fk1_baz_to_bar] foreign key([foo_id]) references LINKEDSERVER.RemoteDatabase.dbo.tbl_bar ([id])
然后我得到以下错误:
对象名称“ LINKEDSERVER.RemoteDatabase.dbo.tbl_bar”包含的前缀数量超过了最大数量。最大值为2。
有什么办法可以达到同样的效果?
外键不能连接到非本地对象- 它们必须引用本地表。您收到“最大前缀数”错误,因为您引用的表具有4部分的名称(LinkedServer.Database.Schema.Object),而本地对象只有3部分的名称。
其他解决方案: