无法架构绑定 sql server 视图

Posted

技术标签:

【中文标题】无法架构绑定 sql server 视图【英文标题】:Unable to Schema bind sql server view 【发布时间】:2018-07-15 13:46:08 【问题描述】:
Create view vw_SingleSales with Schemabinding as
Select I.saleno, I.gin,I.ginbale,I.crop,I.whse_store,
I.receipt,I.netwt,I.storedate,
I.colorgrade,I.leafgrade,I.staple,I.mic,I.GPT,
I.Extmatr,I.remarks,I.Length,I.unif,I.purchno,
P.market_colorpd,P.market_micpd,
P.market_unifpd,P.market_extmatr,
P.market_gpt,P.market_remarks,

P.market_colorpd+P.market_micpd+
P.market_unifpd+P.market_extmatr+
P.market_gpt+P.market_remarks Tot_MarketPD,


P.loan_colorpd,P.loan_micpd,
P.loan_unifpd,P.loan_extmatr,
P.loan_gpt,P.loan_remarks,

P.loan_colorpd+P.loan_micpd+
P.loan_unifpd+P.loan_extmatr+
P.loan_gpt+P.loan_remarks Tot_LoanPD


from bschema.dbo.Bales_Invoiced_Tbl I 
inner join bschema.dbo.BSales_Contracts_Tbl S on I.saleno = S.saleno
left join bschema.dbo.Bales_PD_Tbl P on I.gin = P.gin and I.ginbale = P.ginbale and I.crop = P.Crop

我收到错误消息“消息 4512,级别 16,状态 3,过程 vw_SingleSales,第 2 行 [批处理开始行 0] 无法架构绑定视图 'vw_SingleSales',因为名称 'bschema.dbo.Bales_Invoiced_Tbl' 对于架构无效绑定。名称必须采用两部分格式,并且对象不能引用自身。 "

我做错什么了..??

【问题讨论】:

消息非常清楚 - 视图中的所有对象引用必须与视图位于同一数据库中(2 个部分名称 - 仅模式和对象)。如果它们在同一个数据库中,您可以并且应该删除数据库名称以将引用从 3 部分名称更改为 2 部分名称。 谢谢你,Smor,但你能不能让它更清楚一点..??我是 sql server 编程的新手。将 3part 名称更改为 2part 名称是什么意思..?? 【参考方案1】:

模式绑定视图的主要标准之一是视图中的表必须在相同的模式中(当然,在相同的数据库中)。因此它们应该由两部分名称(schema-name.table-name)引用。在您的情况下,您遵循了三部分命名(即 bschema>.dbo.bales_invoiced_Tbl)。为了使其名称由两部分组成,您需要提及 dbo.bsales_invoiced_Tbl。似乎 dbo 模式可以访问此处的表。因此,请尝试使用 2 部分命名创建视图(即删除 bschema 并尝试 dbo.bales_invoiced_Tbl 等)。

【讨论】:

以上是关于无法架构绑定 sql server 视图的主要内容,如果未能解决你的问题,请参考以下文章

如何将架构绑定添加到 SQL Server 2008 中的视图

SQL Server - 使用当前 GetDate 筛选器创建架构绑定索引视图

SQL Server里面啥样的视图才能创建索引

无法在视图上创建索引,因为视图未绑定架构 [重复]

无法对视图创建索引,因为该视图未绑定到架构

无法在 SQL Server 2008 上绑定多部分标识符