创新性应用-在工作过程中总结了SQL 2005的主要新特性-崔欣

创新性应用:
在工作过程中总结了SQL 2005的主要新特性:
1.SQL Server 2005中的CLR
     SQL Server2005 最引人瞩目的是在数据库引擎中集成了对Windows .NET Framework CLR的支持,我们可以用VB.NET, C#等托管语言完成以前T-SQL 难以完成的任务。
2.SQL Server 2005报表服务的配置与开发
    SQL Server 2005 集成了最新的Reporting Services,它是一个良好的应用程序和管理工具,可以方便的创建、查看和管理报表,满足企业用户BI的需求。
3.SQL Server 2005中使用Native HTTP支持
    Web Service是面向服务体系(SOA)的一种实现, 以前我们在实现Web Service时, 需要构建Web站点, 开发ASP.NET Web服务项目。现在,SQL Server 2005支持Native HTTP,可以在SQL Server中直接实现基于SOAP的Web Service。
4.SQL Server 2005 T-SQL增强
    Transact-SQL 一直以来就是SQL Server所有编程的基础。SQL Server 2005 提供了很多新的语言功能用以开发可伸缩的数据库应用程序。这些增强包括错误处理、新的递归查询功能、对新的SQL Server数据库引擎功能的支持等。SQL Server 2005中的 Transact-SQL 增强功能提高了您在编写查询时的表达能力,使您可以改善代码的性能,并且扩充了您的错误管理能力。
5.数据挖掘常用模型
    SQL Server 2005在数据挖掘方面提供了更为丰富的模型、工具以及扩展空间。包括:可视化的数据挖掘工具与导航、8种数据挖掘算法集成、DMX 、XML/A、第三方算法嵌入支持...等等。
6.使用SQL Server 2005 DataMining构建智能应用
     Microsoft SQL Server 2005 是一个完整的商务智能 (BI) 平台,其中为用户提供了可用于构建典型和创新的分析应用程序所需的各种特性、工具和功能。
 
SQL2005中修改存储过程
初次使用SQL Server 2005时,在修改了存储过程后竟然不知道如何保存。
    我在SQL Server Management Studio的Progammability中找到相应的存储过程,点击右键并选择“Modify”,会打开编辑窗口,我修改后点击保存,却出现“Save File As”对话框,让我选择保存的路径和文件名,也就是保存为另外一个文件,而不是直接保存修改的存储过程。不知道为什么要这样设计,我想一般人刚开始使用时都会像我这样操作。我在SQL Server Management Studio中也没找到其他操作方法。真让人郁闷!
通过它们编辑存储过程时,也是在存储过程之前会加上“ALTER”关键字,但在VS 2003和VS 2005中,点击保存按钮会直接保存对存储过程的修改。我觉得SQL Server Management Studio中这样的设计并不是很合理。
后来在网上找到一篇文章“Saving Stored Procedure”才知道如何保存修改的存储过程,原来是通过点击“Execute”按钮(或者按F5键)。 本来我以为这个操作是直接执行存储过程的。后来我发现,当通过“Modify”打开编辑窗口时,在存储过程之前会加上“ALTER”关键字,所以当通过“Execute”存储过程实际就是修改存储过程,并不执行存储过程中的SQL语句。这让我想起了VS 2003和VS 2005,当通过它们编辑存储过程时,也是在存储过程之前会加上“ALTER”关键字,但在VS 2003和VS 2005中,点击保存按钮会直接保存对存储过程的修改。我觉得SQL Server Management Studio中这样的设计并不是很合理。
行业借鉴经验:
数据库设计经验
1. 用约束而非商务规则强制数据完整性
如果你按照商务规则来处理需求,那么你应当检查商务层次/用户界面:如果商务规则以后发生变化,那么只需要进行更新即可。
假如需求源于维护数据完整性的需要,那么在数据库层面上需要施加限制条件。
如果你在数据层确实采用了约束,你要保证有办法把更新不能通过约束检查的原因采用用户理解的语言通知用户界面。除非你的字段命名很冗长,否则字段名本身还不够。
只要有可能,请采用数据库系统实现数据的完整性。这不但包括通过标准化实现的完整性而且还包
括数据的功能性。在写数据的时候还可以增加触发器来保证数据的正确性。不要依赖于商务层保证
数据完整性;它不能保证表之间(外键)的完整性所以不能强加于其他完整性规则之上。
2. 分布式数据系统
对分布式系统而言,在你决定是否在各个站点复制所有数据还是把数据保存在一个地方之前应该估计一下未来5 年或者10 年的数据量。当你把数据传送到其他站点的时候,最好在数据库字段中设置一些标记。在目的站点收到你的数据之后更新你的标记。为了进行这种数据传输,请写下你自己的批处理或者调度程序以特定时间间隔运行而不要让用户在每天的工作后传输数据。本地拷贝你的维护数据,比如计算常数和利息率等,设置版本号保证数据在每个站点都完全一致。
3. 强制指示完整性
没有好办法能在有害数据进入数据库之后消除它,所以你应该在它进入数据库之前将其剔除。激活数据库系统的指示完整性特性。这样可以保持数据的清洁而能迫使开发人员投入更多的时间处理错误条件。
4. 关系
如果两个实体之间存在多对一关系,而且还有可能转化为多对多关系,那么你最好一开始就设置成多对多关系。从现有的多对一关系转变为多对多关系比一开始就是多对多关系要难得多。
5. 采用视图
为了在你的数据库和你的应用程序代码之间提供另一层抽象,你可以为你的应用程序建立专门的视图而不必非要应用程序直接访问数据表。这样做还等于在处理数据库变更时给你提供了更多的自由。
6. 给数据保有和恢复制定计划
考虑数据保有策略并包含在设计过程中,预先设计你的数据恢复过程。采用可以发布给用户/开发人员的数据字典实现方便的数据识别同时保证对数据源文档化。编写在线更新来“更新查询”供以后万一数据丢失可以重新处理更新。
7. 用存储过程让系统做重活
解决了许多麻烦来产生一个具有高度完整性的数据库解决方案之后,我所在的团队决定封装一些关联表的功能组,提供一整套常规的存储过程来访问各组以便加快速度和简化客户程序代码的开发。在此期间,我们发现3GL 编码器设置了所有可能的错误条件,比如以下所示:
SELECT Cnt = COUNT (*)
FROM [<Table>]
WHERE [<primary key column>] = <new value>
IF Cnt = 0
BEGIN
INSERT INTO [<Table>]
( [< primary key column>] )
VALUES ( <New value> )
END
ELSE
BEGIN
<indicate duplication error>
END
而一个非3GL 编码器是这样做的:
INSERT INTO [<Table>]
( [< primary key column>] )
VALUES
( <New value> )
IF @@ERROR = 2627 -- Literal error code for Primary Key Constraint
BEGIN
<indicate duplication error>
END
第2 个程序简单多了,而且事实上,利用了我们给数据库的功能。虽然我个人不喜欢使用嵌入文字(2627)。但是那样可以很方便地用一点预先处理来代替。数据库不只是一个存放数据的地方,它也是简化编码之地。
8. 使用查找
控制数据完整性的最佳方式就是限制用户的选择。只要有可能都应该提供给用户一个清晰的价值列表供其选择。这样将减少键入代码的错误和误解同时提供数据的一致性。某些公共数据特别适合查找:国家代码、状态代码等。
 
应用难点技巧:
Sql server 数据库实用小技巧
包括安装时提示有挂起的操作、收缩数据库、压缩数据库、转移数据库给新用户以已存在用户权限、检查备份集、修复数据库等。
  (一)挂起操作
   在安装 Sql sp 补丁的时候系统提示之前有挂起的安装操作,要求重启,这里往往重启无用,解决办法:到 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Session Manager
   删除 PendingFileRenameOperations
  (二)收缩数据库
   -- 重建索引 DBCC REINDEX DBCC INDEXDEFRAG
   -- 收缩数据和日志 DBCC SHRINKDB DBCC SHRINKFILE
  (三)压缩数据库 dbcc shrinkdatabase(dbname)
  (四)转移数据库给新用户以已存在用户权限 exec sp_change_users_login @#update_one@#,@#newname@#,@#oldname@# go
  (五)检查备份集 RESTORE VERIFYONLY from disk=@#E:/dvbbs.bak@#
   (
六)修复数据库 ALTER DATABASE [dvbbs] SET SINGLE_USER GO DBCC CHECKDB(@#dvbbs@#,repair_allow_data_loss) WH TABLOCK GO ALTER DATABASE [dvbbs] SET MULTI_USER GO --CHECKDB 有3个参数: --REPAIR_ALLOW_DATA_LOSS
   -- 执行由 REPAIR_REBUILD 完成的所有修复,包括对行和页进行分配和取消分配以改正分配错误、结构行或页的错误,以及删除已损坏的文本对象。这些修复可能会导致一些数据丢失。修复操作可以在用户事务下完成以允许用户回滚所做的更改。如果回滚修复,则数据库仍会含有错误,应该从备份进行恢复。如果由于所提供修复等级的缘故遗漏某个错误的修复,则将遗漏任何取决于该修复的修复。修复完成后,备份数据库。
   --REPAIR_FAST 进行小的、不耗时的修复操作,如修复非聚集索引中的附加键。这些修复可以很快完成,并且不会有丢失数据的危险。
--REPAIR_REBUILD
执行由 REPAIR_FAST 完成的所有修复,包括需要较长时间的修复(如重建索引)。执行这些修复时不会有丢失数据的危险。 --DBCC CHECKDB(@#dvbbs@#) with NO_INFOMSGS,PHYSICAL_ONLY
 
 
 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值