sql脚本生成器,SQL脚本生成的一些BUG(1)

SQL脚本生成的一些BUG(1) - 应用软件 - 电脑教程网

SQL脚本生成的一些BUG(1)

日期:2007-04-11   荐:
  微软的SQL脚本生成令我伤透了心——我一直以为是我的程序上的问题,或者我操作上的失误,并且,客服人员屡屡埋怨我的程序bug,多次测试之后,才发现,原来都是微软惹的祸…… Sql Server的脚本生成有不少漏洞,经常由_art_center>它生成的脚本运行起来会有错误。下面举例说明: 1. 并没有根据sysdenpends的依赖关系生成SQL代码,而是根据所谓的“优先级”来生成。 比如:他认为view的优先级就要比function高。 那么,我写了下面的测试程序,形成如下的依赖关系:fnT1 <-- vwT1 <-- fnT2 就是,view vwT1处于依赖的中间。_NOBR> _CODE>create function fnT1()returns Integerasbeginreturn 123endgocreate view vwT1asselect aa=dbo.fnT1()gocreate function fnT2()returns tableasreturn (select * from vwT1)go_CODE>_NOBR>运行到数据库之后,用Enterprise生成SQL代码。要注意选项不一样,生成的代码会有所不同,在这里我没有选数据库和用户。 _NOBR> _CODE>if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fnT1]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[fnT1]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[fnT2]') and xtype in (N'FN', N'IF', N'TF'))drop function [dbo].[fnT2]GOif exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[vwT1]') and OBJECTPROPERTY(id, N'IsView') = 1)drop view [dbo].[vwT1]GOSET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GOCreate view vwT1AsSelect aa=dbo.fnT1()GOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GOCreate function fnT1()Returns IntegerAsbeginReturn 123endGOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOSET ANSI_NULLS ON GOCreate function fnT2()Returns TableAsReturn (Select * From vwT1)GOSET QUOTED_IDENTIFIER OFF GOSET ANSI_NULLS ON GO_CODE>_NOBR>
标签: