2009年04月22日
在SQL Server 2005中,新增的OUTPUT子句极大地提高了数据转移的方便性,不过很遗憾的是, OUTPUT子句的输出表不能包含启用状态的CHECK约束。这未免让人觉得很不爽。不过,在实际使用过程中,却发现了一个很奇怪的问题,某些具有启用状态的CHECK约束的表确实无法用于OUTPUT子句,而某些表却是可以的,经过对比,发现了这个很奇怪现象的原因,使得可以把有启用状态的CHECK约束的表用于OUTPUT子句阅读全文>
发表于 @ 2009年04月22日 05:06:00|评论(loading...)|举报|收藏
2009年03月10日
“更改跟踪”和“变更数据捕获”是 SQL Server 2008 提供的一项新功能,用于捕获和记录用户表的DML更改(插入、更新和删除操作),为某些有特殊需求的应用程序服务。阅读全文>
发表于 @ 2009年03月10日 11:02:00|评论(loading...)|举报|收藏
2009年02月23日
SQL Server 2008 引入了更改跟踪,这是一种轻量型解决方案,它为应用程序提供了一种有效的更改跟踪机制。通常,若要使应用程序能够查询对数据库中的数据所做的更改和访问与这些更改相关的信息,应用程序开发人员必须实现自定义更改跟踪机制。创建这些机制通常涉及多项工作,并且常常涉及使用触发器、timestamp 列和新表组合来存储跟踪信息,同时还会涉及使用自定义清除过程。
通过更改跟踪,可以很容易地编写同步数据的应用,本文演示使用更改跟踪实现单向数据同步.
阅读全文>
发表于 @ 2009年02月23日 06:59:00|评论(loading...)|举报|收藏
2009年02月19日
在SQL Server 中,使用FOR XML 生成xml 实例时,binary 数据使用base64 编码,而解释xml 的时候,却没有相应的解码方法。使用此函数可以解决这个问题阅读全文>
发表于 @ 2009年02月19日 14:46:00|评论(loading...)|举报|收藏
2009年02月14日
在SQL Server 2005/2008中,维护计划的功能通过SSIS包来完成。如果不小心在SSIS管理中删除了"Maintenance Plans"文件夹,则在SQL Server中建立维护计划的时候会出现问题,重新建立此文件夹并不能完全解决问题阅读全文>
发表于 @ 2009年02月14日 05:09:00|评论(loading...)|举报|收藏
2008年12月28日
事务中的变量(包括表变量)的操作是不受事务控制的。但是反过来,事务中的变量操作失败,却会导致事务提交失败,这个有点让人郁闷阅读全文>
发表于 @ 2008年12月28日 02:56:00|评论(loading...)|举报|收藏
2008年12月13日
演示如何在 SQL Server 2005/2008 中,使用 Gmail 帐号配置数据库邮件功能阅读全文>
发表于 @ 2008年12月13日 14:12:00|评论(loading...)|举报|收藏
2008年11月10日
一个存储过程, 用于将指定的表/视图中的数据导出为 html 文件阅读全文>
发表于 @ 2008年11月10日 03:45:00|评论(loading...)|举报|收藏
2008年11月07日
将当前数据库中, 所有表的smalldatetime 列改为nvarchar(20)
如果列上有索引/默认值之类的依赖项, 则无法修改
阅读全文>
发表于 @ 2008年11月07日 11:30:00|评论(loading...)|举报|收藏
2008年09月19日
xp_cmdshell是一个很危险的存储过程,通过它,可以访问操作系统的资源,但有时候我们也需要使用它来实现一些特殊的处理。
从安全的角度来考虑,禁用xp_cmdsehll是最保险的,即使为了特殊目的而要求使用它,也最好能够编写一些实现这个特殊目的的用户存储过程,只在这个用户存储过程中使用xp_cmdshell,而普通用户只能使用这些用户存储过程。
阅读全文>
发表于 @ 2008年09月19日 11:15:00|评论(loading...)|举报|收藏
2008年09月16日
在论坛上遇到一个问题,询问如何使用一个普通用户调用一个存储过程,这个存储过程使用了sp_OACreate这一系列存储过程来执行一些非常规的任务。当然,前提是普通用户只有调用这个存储过程的时候才能获得执行sp_OACreate的权限。最初的时候也没有仔细考虑,心想,sp_OACreate需要具有sysadmin固定服务器角色的成员身份才能调用,那么直接在存储过程用EXECUTE AS LOGIN将会话的执行上下文设置了一个sysadmin固定服务器角色的成员就好了吧,于是给了一段T-SQL脚本。
但随后发现是行不通的,如果要用EXECUTE AS LOGIN,调用者必须对要模拟的登录具有IMPERSONATE权限,但如果普通用户拿到了这个权限,则他可以随时使用EXECUTE AS LOGIN,没有达到“普通用户只有调用这个存储过程的时候才能获得执行sp_OACreate的权限”的控制目的。
阅读全文>
发表于 @ 2008年09月16日 11:07:00|评论(loading...)|举报|收藏
2008年08月31日
SQL Server 2008 正式发布了,在中文系统下安装中文版时,始终有些问题,今天狠心把操作系统一齐重新装了,结合之前安装时碰到的问题的解决经验,这次总算是一次性安装成功。
本文主要讲一下我的安装经历。阅读全文>
发表于 @ 2008年08月31日 11:09:00|评论(loading...)|举报|收藏
2008年06月25日
所谓N+1的SQL Server群集,主要是以节约成本为出发点的一种群集方案。一般的SQL Server群集,每个SQL Server服务至少有两个结点,一个提供服务,另一个备用。而N+1的SQL Server群集,是多个SQL Server共享一台备用服务器。这样,如果有两个SQL Server服务,则只需要2(提供服务的服务器)+1(备用服务器)=3台服务器。一般来说,多台服务器同时出故障的可能性比较小,所以N+1的SQL Server群集在保证了高可用性的前提下,最大程度的节约了成本。本示例演示配置2+1的SQL Server 2005群集阅读全文>
发表于 @ 2008年06月25日 13:22:00|评论(loading...)|举报|收藏
所谓N+1的SQL Server群集,主要是以节约成本为出发点的一种群集方案。一般的SQL Server群集,每个SQL Server服务至少有两个结点,一个提供服务,另一个备用。而N+1的SQL Server群集,是多个SQL Server共享一台备用服务器。这样,如果有两个SQL Server服务,则只需要2(提供服务的服务器)+1(备用服务器)=3台服务器。一般来说,多台服务器同时出故障的可能性比较小,所以N+1的SQL Server群集在保证了高可用性的前提下,最大程度的节约了成本。本示例演示配置2+1的SQL Server 2005群集阅读全文>
发表于 @ 2008年06月25日 13:00:00|评论(loading...)|举报|收藏
所谓N+1的SQL Server群集,主要是以节约成本为出发点的一种群集方案。一般的SQL Server群集,每个SQL Server服务至少有两个结点,一个提供服务,另一个备用。而N+1的SQL Server群集,是多个SQL Server共享一台备用服务器。这样,如果有两个SQL Server服务,则只需要2(提供服务的服务器)+1(备用服务器)=3台服务器。一般来说,多台服务器同时出故障的可能性比较小,所以N+1的SQL Server群集在保证了高可用性的前提下,最大程度的节约了成本。本示例演示配置2+1的SQL Server 2005群集阅读全文>
发表于 @ 2008年06月25日 12:42:00|评论(loading...)|举报|收藏