2010-12-15 84 views
3

我有2个数据库.... a & b我可以用一个视图(同名)来替换表格吗?

我在这两个数据库中都有表“t”。

现在我正在从数据库“b”中删除表t。

我在 数据库“b”中创建了一个视图“t”(请参阅​​视图的名称与删除的表相同),而此视图引用数据库“a”中的表“t”。

我有一个dotnet应用程序......它指向数据库“b”。它有内联查询.... 所以我可以在内联查询中保留这样的参考“b.t”。 我的意思是现在它会引用视图“t”而不是表“t”?

回答

5

是的,但是您要替换的表必须首先被删除或重命名 - 只有一个对象可以具有该名称。

用途:

CREATE VIEW b.dbo.t AS 
    SELECT a.* 
    FROM a.dbo.t a 

唯一需要注意的是在B datbase用户可能需要被授予SELECT权限:

GRANT SELECT ON b.dbo.t TO user 

理想的情况下,创建一个角色,然后授予SELECT到其作用然后您可以添加到用户。

+0

我的问题不是如何创建视图...如果我创建一个与删除表同名的视图。我是否必须更改存储过程/内嵌查询中的任何引用? – Relativity 2010-12-16 00:01:20

+0

@Anish:只要列名和它们的数据类型匹配,事情应该没问题,但重新编译SP/etc不会伤害。 – 2010-12-16 00:03:23

+0

不,你不需要改变引用,只要它们在同一模式名字集中 – 2010-12-16 00:04:18

相关问题