快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

从上面你一眼就可以看出来了,建立view要比建立function先,而不是根据依靠关系建立。毫无疑问,将会得到如下的严峻的错误:

服务器: 消息 208,级别 16,状态 1,过程 vwT1,行 4

对象名 \\\'dbo.fnT1\\\' 无效。

服务器: 消息 208,级别 16,状态 1,过程 fnT2,行 5

对象名 \\\'vwT1\\\' 无效。

2. 作业脚本

这个我就不说了,bug还不是很严峻,主要是中文“――”注释符的问题。英文版我没有测试过,不过猜想应当没有这个bug,大家可以试试看。

3. 还有一个SP的问题

spGetIDStr和spAnalyseStrList的关系,是后者依靠于前者。可是spGetIDStr我并没有调用任何的表,因此,每当运行SQL Server生成的脚本的时候,总是报告类似这样的信息:

spGetIDStr并不存在,无法在sysdepends里建立依靠关系,存储过程spAnalyseStrList仍旧建立。无论我手工修改其建立顺序或是别的方面,用它生成的脚本就是有错。这里,再看看第三个bug,看我下面的测试程序:

(原理:当sp没有对表或视图等数据库对象有依靠关系时,sp被别的sp引用时也将无法建立依靠关系)

形成依靠关系:spB1 <--- spA1

_NOBR> _CODE>create proc spB1
as
return 11

go

create proc spA1
as
begin
declare @i int
exec @i=spB1
return @i*2
end
go_CODE>

_NOBR>

生成的脚本就为:

_NOBR> _CODE>if exists (select * from dbo.sysobjects where id = object_id(N\\\'[dbo].[spA1]\\\') and OBJECTPROPERTY(id, N\\\'IsProcedure\\\') = 1)
drop procedure [dbo].[spA1]
GO

if exists (select * from dbo.sysobjects where id = object_id(N\\\'[dbo].[spB1]\\\') and OBJECTPROPERTY(id, N\\\'IsProcedure\\\') = 1)
drop procedure [dbo].[spB1]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


Create proc spA1
As
Begin
Declare @i int
Exec @i=spB1
Return @i*2
End

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

Create Proc spB1
As
Return 11


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO_CODE>

_NOBR>

现在,大家应当明白我故意命名为spA1,spB1缘故了。因为假如没有依靠关系的话,A自然排在B前面,你看微软可不就是这么做的么?幸好这个bug还不是很大,怎么说SP还是建立了起来。

各位有爱好的可以试试别的,比如sp与fn,sp Group等等。

返回类别: 教程
上一教程: 数据库设计指南
下一教程: 删除数据库中重复数据的几个方式

您可以阅读与"SQL脚本生成的一些BUG(2)"相关的教程:
· SQL脚本生成的一些BUG
· SQL脚本生成的一些BUG(1)
· 将表数据生成SQL脚本的存储过程
· 使用MYSQL时的一些常见错误
· SQL SERVER中的一些技巧
    微笑服务 优质保证 索取样品