[DNN模块开发]快速正确的制作DNN模块数据库安装脚本(2006-4-20重新修订)
Posted on 2005-10-25 12:58 二十四画生 阅读(4527) 评论(9) 编辑 收藏 举报 DotNetNuke模块开发完成后,对于有添加新的数据表的模块,都需要制作DNN模块的数据库安装脚本。关于快速正确的制作数据库安装脚本,我总结了一点小小的经验,今天把它Post出来大家分享,如果大家有更方便的方法也请不吝赐教。
1、我这种方法适合,边开发边完善数据库设计的做法。当模块开发完成数据表和存储过程就都已经完成了。如果大家手工就能把数据库安装脚步写好,就不用进行以下步骤了。
注意:在编写存储过程时将表名和存储过程名前面加上“dbo.”,并且加上特有的前缀(如:“公司名_”)。这样一来不会和其他模块的表重名,二来有助于替换。
2、在SQL Server企业管理器中生成相关对象的SQL脚步,步骤如下:
1)在企业管理器中选择DNN数据库,选择“所有任务—>生成SQL脚本”。
2)如下图所示选择模块相关的数据表和存储过程。
(数据表和存储过程加上前缀后是不是很好找呀)
3)如下两图所示设置格式及选项
3、在生成DNN数据库安装脚本时只需要进行以下几步操作就可以了:
1)将“dbo.”或“[dbo].”替换为“{databaseOwner}”;
2)将统一的前缀替换如:“Esshs_”替换为“{objectQualifier}Esshs_”;
3)找到脚本中使用公共表的位置,检查它们是否是“{databaseOwner}{objectQualifier}表名”;如果不是请更正。通常我们用到的公共表有:Users,Modules,Files等
4)去掉脚本中类似:
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
和
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
5)将脚本中用到系统表“{databaseOwner}sysobjects”改回为“dbo.sysobjects”
以前我还写过一篇《如何写模块数据库安装脚本》该文章中的方法虽然比较笨拙,但是有两个值得注意的问题我在这里也把它Copy过来,大家如遇到安装脚本出错时可以参考参考。
一个值得注意的问题:
SQL Server数据库的安装/卸载脚本,是通过SqlDataProvider类中的ExecuteScript方法执行的。该方法中有这么一句“Dim Delimiter As String = "GO" & ControlChars.CrLf”,也就是说是以:“GO+回车换行符”来分割一段SQL脚本中每一个可被执行的SQL语句。利用Split分隔每一个语句到一个数组中,通过循环执行每一个SQL。这样我们在写数据库的安装/卸载脚本时一定要注意在每一个语句后面都加上“GO+回车换行符”,特别是最后一句的“回车换行符”一定不能忘记。否则,最后一句要么执行不了,要么会报错。
还有一个值得注意的问题:
数据库的安装/卸载脚本文件必须以utf-8编码格式保存,否则可能会报错。
关于{databaseOwner}{objectQualifier}的作用可见这篇文章:
http://www.cnblogs.com/csdn/archive/2004/11/30/71118.html
更多相关内容>>
==========================================
作者:二十四画生
转载请注明来源于博客园——二十四画生的Blog,并保留有原文链接。