Visual studio 2017 VS2017/VS2019-SQL Server数据库项目-连接到用户定义的表类型会中断架构验证 使用Visual Studio 2017/2019(最新更新) SQL Server数据库项目(创建了一个全新的项目进行测试) 以Azure SQL数据库V12为目标
我们注意到,在VisualStudio中加入用户定义的表类型(UDTT)时,脚本的模式验证被禁用。因此,如果存在键入错误的列名,例如,构建(本地或Azure DevOps构建服务器上)不会捕获错误 下面是一个完整的例子来说明这个问题 在本例中,修改了表“RealTable”,删除了列“MissingColumn”。即使仍在引用“MissingColumn”,构建也没有失败 在试图找出构建没有中断的原因时,我发现注释UDTT的连接恢复了构建和IDE中的模式验证强> 是否可以修复此问题?如果我将上述脚本复制到SSMS中,验证将按预期工作 演示行为的屏幕截图Visual studio 2017 VS2017/VS2019-SQL Server数据库项目-连接到用户定义的表类型会中断架构验证 使用Visual Studio 2017/2019(最新更新) SQL Server数据库项目(创建了一个全新的项目进行测试) 以Azure SQL数据库V12为目标,visual-studio-2017,visual-studio-2019,sql-server-data-tools,Visual Studio 2017,Visual Studio 2019,Sql Server Data Tools,我们注意到,在VisualStudio中加入用户定义的表类型(UDTT)时,脚本的模式验证被禁用。因此,如果存在键入错误的列名,例如,构建(本地或Azure DevOps构建服务器上)不会捕获错误 下面是一个完整的例子来说明这个问题 在本例中,修改了表“RealTable”,删除了列“MissingColumn”。即使仍在引用“MissingColumn”,构建也没有失败 在试图找出构建没有中断的原因时,我发现注释UDTT的连接恢复了构建和IDE中的模式验证 是否可以修复此问题?如果我将上述脚本
create table dbo.RealTable (RealColumn int not null);
go
create type dbo.TableOfNVarchar20 as table (Value nvarchar(20) not null);
go
create procedure dbo.usp_ProcReferencingMissingColumn
@tableOf20 dbo.TableOfNVarchar20 readonly
as
begin
set nocount on;
select top (1)
rt.MissingColumn
from dbo.RealTable rt
-- this join breaks all (column level) schema validation in Visual Studio
join @tableOf20 ou on ou.Value = rt.RealColumn
where rt.MissingColumn > getdate()
order by rt.MissingColumn desc;
end;