
数据库管理
zjcxc
这个作者很懒,什么都没留下…
展开
-
基于规则引擎的SQL审核工具打造
SQL审核,是DBA工作是极其重要的一项工作,对于DDL,我们可能需要关注表结构设计、字段定义是否合理,对于DML,可能更关注也要关注操作是否合理且无风险(比如不带条件的DELETE这种大杀器),而对于DQL,我们可能需要关注更多的东西,比如不允许SELECT *,不允许超过多少个表的JOIN。这个是笔者最早做的SQL审核工具,使用的时间不长,解决了一部分人工审核的问题,正则表达式的最大问题显然是难于编写复杂的规则,而且维护难,能实现的功能有限。以笔者的经历而言,经历了三个阶段的SQL审核工具建设。原创 2023-03-05 12:23:53 · 991 阅读 · 0 评论 -
估计表的大小(二)--估计带有聚集索引的表的大小
估计带有聚集索引的表的大小下列步骤可用于估计存储带有聚集索引的表上的数据和任何附加的非聚集索引所需的空间。 计算存储数据所用的空间。 计算存储聚集索引所用的空间。 计算存储每个附加非聚集索引所用的空间。 汇总计算所得的值。 对于每个计算,都要指定将在表中出现的行数。表中的行数将对表的大小有直接影响:表中的行数 = Num_转载 2006-06-25 19:55:00 · 3308 阅读 · 0 评论 -
MS SQL 内存使用异常
问题描述: 环境:主机;IBM 445 /4 棵cpu/4G M OS = windows server MSSQL = Enterprise edition server +sp3状况: 我的MSSQL 一停用,在操作系统的任务管理器中,内存使用状诚指示条一下就降到到接近0,当我一启动MSSQL服务,任务管理器中的内存使用状态指示条原创 2006-06-29 21:11:00 · 6564 阅读 · 2 评论 -
数据库系统崩溃后的一般处理步骤
情况描述:SQL Server 2000崩溃,重新安装数据库。有以下准备:1, 三个系统库(master,msdb,model)的完全备份:2 两个用户数据库(user01,user02)的备份(周日的完全备份+除周日外每天的差异备份):三个系统数据库是早期备份的,之间没有更新过帐号信息,没有增减过作业等等。两个用户数据库在上周日晚做过完全备份(user01.bak和原创 2006-07-01 21:59:00 · 9761 阅读 · 2 评论 -
如何解决引用对象时,必须加所有者(owner)的问题
问题描述:从别处copy来一个数据库DB,附加后,对象的所有者不是Admini,每次查询时必需写select * from Admini.***才能查到。有什么方法不用前面的Admini吗(在不修改所有者的前提下)?注:已经在“安全性-登陆”下面也新建了一个Admini用户,默认数据库设置为DB,权限足够,但在查询分析器下用Admini登陆,查询时还是要写Admini前缀,否则就提示对原创 2006-07-03 16:21:00 · 5066 阅读 · 1 评论 -
解决密码中包含{},密码修改成功后, 查询分析器无法用此密码登录的问题
问题描述:在修改SQL Server 2000的sa密码时在密码中包含了{}字符,例如所修改的密码为:“{password}”(双引号中的字符为密码的全部字符),密码修改成功了,可是用sa登录名及密码{password}再登录不上去,请问哪位高手也曾经碰到这样的情况,有没有解决的办法? 解决方法:如果有其他管理员用户,或者是默认的登录BUILTIN/Administra原创 2006-07-09 23:01:00 · 5164 阅读 · 1 评论 -
如何迁移数据库到另一个分区
问题描述:一台服务器,联了好几个阵列,其实可以看作不同的逻辑驱动器,就假设为c盘,d盘,e盘sql server 2000 程序装在了c盘,数据装在了d盘现在阵列d需要撤走,我需要把原来d盘的数据库文件挪到e盘上,数据库有100多个,一个一个手动备份恢复时间不够,而且我不知道数据库文件的路径变了以后会有什么问题(我做了试验,服务起不起来了)。我应该如何做?我试了一种办法,就原创 2006-07-09 22:52:00 · 9120 阅读 · 2 评论 -
如何控制触发器递归
背景A表UPDATE后,取B表某列再次UPDATE A表,这样又触发了A表的 UPDATE 触发器,我的目的是只触发一次,是否设置 nested triggers 选项关闭递归触发器即可?分析首先,必须清楚触发器递归的定义,触发器有两种递归方式:1. 直接递归A表上的触发器更改(插入/删除/更新)A表数据,导致A表的触发器再次触发,这种状况称之为原创 2007-08-05 03:06:00 · 11355 阅读 · 4 评论 -
安装SQL Server 2008 及 VS 2008
SQL Server 2008 正式发布了,在中文系统下安装中文版时,始终有些问题,今天狠心把操作系统一齐重新装了,结合之前安装时碰到的问题的解决经验,这次总算是一次性安装成功。环境:64位环境(32位环境不一定有问题,英文Windows XP下安装英文版没有本文中提到的问题)Windows 2008 SQL Server 2008Visual Studio 2008 +原创 2008-08-31 11:09:00 · 20966 阅读 · 10 评论 -
在 VMWare 中配置 SQL Server 2005 N + 1 群集 (二) 在Vmware配置虚拟机
2. 在Vmware配置虚拟机所以的OS均使用Windows Server 2003企业版,故可以创建一台虚拟机,完成基本的配置和安装,最后使用Sysprep工具抽取SID后关机并做一个快照,然后克隆出另外4台虚拟机(也可以不使用Sysprep工具,直接克隆,然后使用newsid这个小工具重新生成SID并修改计算机名)。2.1 创建第一台虚拟机(模板机)VM原创 2008-06-25 11:50:00 · 23326 阅读 · 2 评论 -
在 VMWare 中配置 SQL Server 2005 N + 1 群集 (三) 群集安装
3. 群集安装群集的安装包括Domain的安装(DNS和域的创建)、群集的创建及群集结点添加三部分。3.1 DomainDomain具有DNS和域两大角色。3.1.1 安装和配置DNS3.1.1.1安装DNS打开添加/删除程序(Control PanelàAdd or Remove Programs),在随后出现的“Add or原创 2008-06-25 12:42:00 · 18920 阅读 · 2 评论 -
在 VMWare 中配置 SQL Server 2005 N + 1 群集 (四) SQL Server 安装
4. SQL Server安装一台服务器上,只能安装一个SQL Server默认实例,在群集中安装SQL Server也有此限制。本示例需要提供两个SQL Server实例,故不考虑安装默认实例。两个实例都安装为命名实例。4.1 安装第一个SQL Server实例(SQL01)SQL Server安装可以在任何一个群集中的结点上进行安装。示例中选择“SQLS原创 2008-06-25 13:00:00 · 16875 阅读 · 4 评论 -
在 VMWare 中配置 SQL Server 2005 N + 1 群集 (一) 环境
1. 实验环境Vmware Server 1.0.6SQL Server 2005 企业版Host OS: Windows Server 2003 企业版Guest OS:Windows Server 2003 企业版1.1 背景所谓N+1的SQL Server群集,主要是以节约成本为出发点的一种群集方案。一般的SQL Server群集,每个S原创 2008-06-25 11:08:00 · 16382 阅读 · 13 评论 -
在 VMWare 中配置 SQL Server 2005 N + 1 群集 (五) SQL Server 群集维护
5. SQL Server群集维护对于SQL Server群集,其维护主要在于调整SQL Server配置及添加或删除群集结点方面。5.1 调整SQL Server配置对于SQL Server配置的调整,应该通过SQL Server的配置管理器来完成(StartàProgramsà Microsoft SQL Server 2005à Configurati原创 2008-06-25 13:22:00 · 10666 阅读 · 12 评论 -
误删除SSIS中的“Maintenance Plans”文件夹的恢复
在SQL Server 2005/2008中,维护计划的功能通过SSIS包来完成。如果不小心在SSIS管理中删除了"Maintenance Plans"文件夹,则在SQL Server中建立维护计划的时候会出现问题,如下图所示。 在Management studio中创建误删除的"Maintenance Plans"文件夹,如下图所示。 建立好"Maintenance Plan原创 2009-02-14 05:09:00 · 7548 阅读 · 0 评论 -
在 SQL Server 2005/2008 中,使用 Gmail 帐号配置数据库邮件功能
下面的脚本演示,在 SQL Server 2005/2008 中,使用 Gmail 帐号配置数据库邮件功能 -- =================================================-- 启用数据库邮件功能-- =================================================EXEC sys.sp_config原创 2008-12-13 14:12:00 · 8633 阅读 · 11 评论 -
扩展 sp_helpindex, 增加 INCLUDE 和筛选索引的筛选条件
SQL Server的系统存储过程似乎没有被重视,新版本的一些特性似乎没有在系统存储过程中体现出来,着实是一件比较郁闷的事。 下面的这个存储过程是对sp_helpindex的扩展,扩展增加两个索引的新特性信息:包含列和列筛选。使用方法和 sp_helpindex 一样,感兴趣的可以试一下。USE master;GO/*-- sp_helpindex 扩展--------------原创 2013-02-19 13:38:53 · 7263 阅读 · 0 评论 -
估计表大小(三)--估计无聚集索引的表的大小
估计无聚集索引的表的大小下列步骤可用于估计存储没有聚集索引的表上的数据和任何附加的非聚集索引所需的空间。 计算存储数据所用的空间。 计算存储每个附加非聚集索引所用的空间。 汇总计算所得的值。 对于每个计算,都要指定将在表中出现的行数。表中的行数将对表的大小有直接影响:表中的行数 = Num_Rows计算存储数据所用的空间若要计转载 2006-06-25 19:59:00 · 3278 阅读 · 0 评论 -
估计表的大小(一)
估计表的大小下列步骤可用于估计存储表中的数据所需的空间量。 指定表中的行数: 表中的行数 = Num_Rows 如果在表的定义中有固定长度和可变长度列,请计算数据行中这两组列的每一组所占用的空间。列的大小取决于数据类型和长度说明。有关更多信息,请参见数据类型。 列数 = Num_Cols所有固定长度列中的字节总和 = Fixed_Dat转载 2006-06-25 19:54:00 · 3867 阅读 · 6 评论 -
比较两个数据库的表结构差异
/*--比较两个数据库的表结构差异 --邹建 2003.9(引用请保留此信息)--*//*--调用示例 exec p_comparestructure xzkh_model,xzkh_new--*/if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[p_comparestructure]) an原创 2004-01-04 10:22:00 · 12791 阅读 · 8 评论 -
显示数据库中的表结构(新增了索引及表的描述信息)
SELECT 表名=case when a.colorder=1 then d.name else end, 表说明=case when a.colorder=1 then isnull(f.value,) else end, 字段序号=a.colorder, 字段名=a.name, 标识=case when COLUMNPROPERTY( a.id,a.name,IsIden原创 2004-03-21 20:32:00 · 3781 阅读 · 1 评论 -
数据库复制
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[p_copydb]) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure [dbo].[p_copydb]GO/*--数据库数据复制 将一个数据库中的数据复制到另一个数据库 如果某列在目标数据库原创 2003-12-29 17:29:00 · 3553 阅读 · 3 评论 -
通过作业,定时同步两个数据库
--定时同步服务器上的数据--例子:--测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test--服务器上的表(查询分析器连接到服务器上创建)create table [user](id int primary key,number varchar(4),name varchar(10))go--以下在局域网(本机操作)--本机的表,state原创 2003-12-29 17:30:00 · 10569 阅读 · 3 评论 -
查询数据库中,表结构的详细信息
SELECT 表名=case when a.colorder=1 then d.name else end, 字段序号=a.colorder, 字段名=a.name, 标识=case when COLUMNPROPERTY( a.id,a.name,IsIdentity)=1 then √else end, 主键=case when exists(SELECT 1 FROM原创 2003-12-31 10:14:00 · 4884 阅读 · 0 评论 -
查询指定的表在那些数据库中存在
--查询指定的表在那些数据库中存在declare @tbname sysnameset @tbname=客户资料declare @dbname sysname,@sql nvarchar(4000),@re bit,@sql1 varchar(8000)set @sql1=declare tb cursor for select name from master..sysdatab原创 2004-01-04 10:22:00 · 3157 阅读 · 0 评论 -
SQL Server数据库检修
使用数据库的过程中,由于断电或其他原因,有可能导致数据库出现一些小错误,比如检索某些表特别慢,查询不到符合条件的数据等.出现这些情况的原因,往往是因为数据库有些损坏,或索引不完整.在ACCESS中,有个修复数据库的功能可以解决这个问题,在SQL企业管理器,没有这个功能,要用语句来完成,下面就介绍如何用 SQL 语句完成数据库的修复,需要注意的是,在进行下面的操作时,必须断开所有用户的连接:原创 2004-03-08 11:30:00 · 2611 阅读 · 0 评论 -
数据库管理员DBA
数据库管理员DBA什么是DBA 数据库管理员,英文是Database Administrator,简称DBA。这个职位对不同的人意味着不同的意义。一个小的软件开发工作室和一个分工高度明细的大公司相比,DBA的职责来得更加宽泛一些。一个公司,不管它是自己开发应用软件,还是购买第三方的应用软件,只要涉及到数据库(有多少不涉及数据库的应用软件呢?数据库是商业的灵魂和大脑啊),就需要确定是否雇佣一个转载 2004-02-11 17:33:00 · 9630 阅读 · 12 评论 -
批量将一个库里的所有表里的char改成nchar类型
/*--将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程--邹建 2004.02(引用请保留此信息)--*/ /*--调用示例: exec p_set --*/ if exists (select * from dbo.sysobjects where id = object_id(N[dbo].原创 2004-02-11 17:36:00 · 2913 阅读 · 1 评论 -
将表中的某个字段转换成标识字段,并保留原来的值
/*--将表中的某个字段转换成标识字段,并保留原来的值 注意,因为要删除原表,所以,如果表和其他表的关联,这些关联要重新创建--邹建 2003.12(引用请保留此信息)--*//*--调用示例 exec p_setid 表名,要转换的字段名--*/if exists (select * from dbo.sysobjects where id = object_id(N原创 2004-02-15 23:39:00 · 2884 阅读 · 0 评论 -
处理BLOCK
use master --必须在master数据库中创建goif exists (select * from dbo.sysobjects where id = object_id(N[dbo].[p_lockinfo]) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure [dbo].[p_lockinfo]GO/*--原创 2004-04-13 14:15:00 · 4184 阅读 · 1 评论 -
搜索某个字符串在那个表的那个字段中
--搜索某个字符串在那个表的那个字段中declare @str varchar(100)set @str=White --要搜索的字符串declare @s varchar(8000)declare tb cursor local forselect s=if exists(select 1 from [+b.name+] where [+a.name+] like %原创 2004-04-13 14:15:00 · 3775 阅读 · 0 评论 -
修改自定义数据类型精度
/*--修改自定义数据类型精度的示例 自定义数据类型一旦被引用,就不能再修改和删除,如果要修改数据的精度,就非常麻烦,下面的示例演示了如何修改 假设要修改的自定义变量名为aa--*/--1.修改自定义变量类型的名称exec sp_rename aa,aa_bak,USERDATATYPEgo--2.新增自定义变量(按新的精度)EXEC sp_addt原创 2004-04-15 17:40:00 · 4354 阅读 · 5 评论 -
根据当月数据库自动生成下个月数据库--1
/*--原帖地址:http://community.youkuaiyun.com/Expert/topic/3818/3818559.xml?temp=.9593317--*//*--处理要求在sql数据库里有一个名为Pos200502的Database,每个月会有一个类似于这样名称(Pos200502 Pos200503)的database我该如何利用sql server的自动作业+一段存储过程,实现以下功原创 2005-03-16 10:30:00 · 4331 阅读 · 2 评论 -
如何使用跟踪标记 1204
如何使用跟踪标记 1204 -- =====================================================-- 如何使用跟踪标记 1204-- -- 邹建 2005.08(引用请保留此信息)-- =====================================================-- ===========================原创 2005-08-25 09:15:00 · 12871 阅读 · 4 评论 -
调试SQL Server的存储过程及用户定义函数
1、在查询分析器中调试 查询分析器中调试的步骤如下: SQL 2000查询分析器 --左连的对象浏览器(没有的话按F8) --对象项中 --右键调试的存储过程 --调试 --输入参数(必须输入所有的参数,包括默认值/输出参数 --点击执行 --出现一个浮动工具条 --上面有单步执行原创 2005-06-03 13:57:00 · 13947 阅读 · 5 评论 -
通过触发器实现数据库的即时同步
--即时同步两个表的实例:--测试环境:SQL2000,远程主机名:xz,用户名:sa,密码:无,数据库名:test--创建测试表,不能用标识列做主键,因为不能进行正常更新--在本机上创建测试表,远程主机上也要做同样的建表操作,只是不写触发器if exists (select * from dbo.sysobjects where id = object_id(N[test]) and OBJ原创 2003-12-29 17:29:00 · 8664 阅读 · 9 评论