日期:2014-05-18  浏览次数:20552 次

无法将 视图'dbo.BP_VIEW' 绑定到架构。'dbo.Get_needChar' 尚未绑定到架构。
想在视图中创建索引.发生下面问题,如何解决?

无法将 视图'dbo.BP_VIEW' 绑定到架构。'dbo.Get_needChar' 尚未绑定到架构。


Get_needChar是CLR函数




------解决方案--------------------
探讨
想在视图中创建索引.发生下面问题,如何解决?

无法将 视图'dbo.BP_VIEW' 绑定到架构。'dbo.Get_needChar' 尚未绑定到架构。


Get_needChar是CLR函数

------解决方案--------------------
Get_needChar 函数没有绑定到架构名里。
------解决方案--------------------
ALTER FUNCTION dbo.f_getstr(
@s NVARCHAR(4000), --待分拆的字符串
@flag NVARCHAR(10)='' --数据分隔符
)RETURNS @r TABLE(col NVARCHAR(1000))
WITH SCHEMABINDING

参考
------解决方案--------------------
SQL code
--创建索引视图
create view 视图名 with schemabinding 
as
select 语句
go

---创建索引视图需要注意的几点
1. 创建索引视图的时候需要指定表所属的架构
--错误写法
create view v_f with schemabinding 
as
select
   a.a,a.b,b.a,b.b
from
   a join b 
on
   a.id=b.id
go

---正确写法:
create view v_f with schemabinding 
as
select
   a.a,a.b,b.a,b.b
from
   dbo.a join dbo.b 
on
   a.id=b.id
go


2.在创建索引视图的select语句时,不使用*,必须指定具体的列名
--错误写法
create view v_f with schemabinding 
as
select
   *
from
   dbo.a join dbo.b 
on
   a.id=b.id
go

---正确写法
create view v_f with schemabinding 
as
select
   a.a,a.b,b.a,b.b
from
   dbo.a join dbo.b 
on
   a.id=b.id
go

3.在创建索引视图的select 语句中,不能存在重复的列名,这个不举例了

4. 只能为索引视图创建唯一聚集索引
--正确的写法
create unique clustered index ix_uniquetb on v_tb
go

--错误的写法 
create clustered index ix_uniquetb on v_tb
go