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

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
从上面你一眼就可以看出来了,建立view要比建立function先,而不是根据依赖关系建立。毫无疑问,将会得到如下的严重的错误:

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

对象名'dbo.fnT1'无效。

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

对象名'vwT1'无效。

2.作业脚本

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

3.还有一个SP的问题

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

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

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

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

_NOBR>_CODE>createprocspB1
as
return11

go

createprocspA1
as
begin
declare@iint
exec@i=spB1
return@i*2
end
go_CODE>

_NOBR>

生成的脚本就为:

_NOBR>_CODE>ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[spA1]')andOBJECTPROPERTY(id,N'IsProcedure')=1)
dropprocedure[dbo].[spA1]
GO

ifexists(select*fromdbo.sysobjectswhereid=object_id(N'[dbo].[spB1]')andOBJECTPROPERTY(id,N'IsProcedure')=1)
dropprocedure[dbo].[spB1]
GO

SETQUOTED_IDENTIFIERON
GO
SETANSI_NULLSON
GO


CreateprocspA1
As
Begin
Declare@iint
Exec@i=spB1
Return@i*2
End

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

SETQUOTED_IDENTIFIERON
GO
SETANSI_NULLSON
GO

CreateProcspB1
As
Return11


GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO_CODE>

_NOBR>

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

各位有兴趣的可以试试别的,比如sp与fn,spGroup等等。

<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 728x15, 创建于 08-4-23MSDN */ google_ad_slot = "3624277373"; google_ad_width = 728; google_ad_height = 15; //--> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"><!-- google_ad_client = "pub-2947489232296736"; /* 160x600, 创建于 08-4-23MSDN */ google_ad_slot = "4367022601"; google_ad_width = 160; google_ad_height = 600; //--> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
阅读更多
个人分类: 数据库
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭