文章分类 - SQL
摘要:默认行为 默认为SETXACT_ABORTOFF,没有事务行为。SETXACT_ABORTON SETXACT_ABORTON分为两种: 1、总体作为一个事务,整体提交或整体回滚,格式为:SET XACT_ABORT ONBEGIN TRAN --要执行的语句COMMIT TRANGO 2、每个语句作为一个事务,事务在错误行终止,错误行回滚,错误行之前的不回滚,格式为:SET XACT_ABORT ONBEGIN --要执行的语句ENDGO测试--创建测试表use MyDBCREATE TABLE student( stuid int NOT NULL...
阅读全文
摘要:方法1:truncatetableTableName删除表中的所有的数据的同时,将自动增长清零。如果有外键参考这个表,这个方法会报错(即便主键表和外键表都已经没有数据),请参考方法2。PS: 用delete删除数据,自动增长不会清零的哦。方法2:DBCCCHECKIDENT('TableName',RESEED,0)不删除表的数据,直接重置自动增长的值。
阅读全文
摘要:insert into(列名) select 列名 from 表名 where 条件 --不创建表,只复制表数据select 列名 into 表名(这个表名是不存在的) from 表名 where 条件,--创建一张新表,只复制选择的列名字段数据
阅读全文
摘要:用VS2005+SQLSERVER2008开发C/S的程序,程序上线运行一段时间之后发现在某些功能偶尔出现如下的错误: 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。) ---> System.Data.SqlClient.SqlException: 在向服务器发送请求时发生传输级错误。 (provider: TCP 提供程序, error: 0 - 远程主机强迫关闭了一个现有的连接。) 开始一直以为是网络连接的问题,最后发现是数据库连接字符串的问题。 之前的数据库连接字符串为: "ser
阅读全文
摘要:EXECsp_msforeachdb@command1=N'PRINT''''RAISERROR(''处理数据库:?'',10,1)WITHNOWAITPRINT''''--截断日志BACKUPLOG[?]WITHNO_LOG--收缩文件USE[?]DECLAREtbCURSORLOCALFORSELECTN''DBCCSHRINKFILE(''+RTRIM(fileid)+N'')''FROMdbo.sysfilesDECLA
阅读全文
摘要:protected void Button1_Click(object sender, EventArgs e){ DateTime beginTime = DateTime.Now;Response.Write("开始时间:" + beginTime.ToString("yyyy年MM月dd日:HH:mm:ss:fff")); //构造一个Datatable存储将要批量导入的数据DataTable dt = new DataTable();dt.Columns.Add("id", typeof(string));dt.Columns
阅读全文
摘要:实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方法所耗费的时间。 本实验中所用到工具为VS2008和SQL SERVER 2000、SQL SERVER 2008,分别使用5中方法将100万条数据导入SQL 2000与SQL 2008中,实验环境是DELL 2850双2.0GCPU,2G内存的服务器。感兴趣的朋友可以下载源代码自己验证一下所用时间。 还要有一点需要进行说明,本实验中执行SQL语句的地方使用了IsLine FrameWork框架中的DataProvider模块,这个模块只是对SQL配置的读取和封装,并不会对最终结果
阅读全文
摘要:两天一直在研究2005中如何对表进行分区,但是参考了多数资料都是说新建表后再将原表中数据插入到新表中,这样有些不方便.今天发现了如何更改表文件组的所在文件组,然后看了看.会不会也能应用到分区表中..试了试嗯.不错...真的管用哦.下面看看代码说明现有表myTb主键索引PK_myTb.原理更改表的聚集索引的所在文件组使得表移动到新的"文件组中(这里我们用表分区)".先创建文件组,以及分区函数等请参考http://hi.baidu.com/bg1jt/blog/item/ad3b6a631ad73a640d33fa4e.html我的这篇文章.然后将创建表部分替换成alter t
阅读全文
摘要:在使用的分区表中,遇到一些问题,也想到一些问题。就一起总结起来。1. 像主表--从表,这种结构才应用同样的分区架构和分区函数,如订单主表--订单详细表。 这样可以存储对齐,于IO和联接查询性能都有提升。 但是如果两张不相关的表,最好不要用同样分区架构和分区函数。因为在对其中一张表做分区结构调整时,会同样作用到另一张表。2. 每个分区对应一个不同的文件组,并置于不同的物理磁盘。这是官方的最佳实践。 但是,我在实践中发现这样管理起来很不方便。比如,订单表,保留最近12个月的数据,分成12分区。订单存档表,因为量太大,可能会按三年前一个分区, 最近三年每年一个分区,共四个分区。这样当把订单表...
阅读全文
摘要:SqlServer数据库同步是项目中常用到的环节,若一个项目中的数据同时存在于不同的数据库服务器中,而这些数据库需要被多个不同的网域调用时,配置 SqlServer数据库同步是个比较好的解决方案。SqlServer数据库同步的配置比较烦锁,下面对其配置详细步骤进行介绍:一、 数据复制前提条件1. 数据库故障还原模型必需为完全还原模型。2. 所有被同步的数据表都必须要用主键。3. 发布服务器、分发服务器和订阅服务器必须使用计算机名称来进行SQLSERVER服务器的注册。4. SQLSERVER必需启动代理服务,且代理服务必需以本地计算机的帐号运行。二、 解决前提条件实施步骤1. 将数据库故障还原
阅读全文
摘要:1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select * from peoplewhere peopleId in (select peopleIdfrom peoplegroupby peopleIdhavingcount(peopleId) > 1)2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录delete from peoplewhere peopleIdin (select peopleIdfrom peoplegroupby peopleIdhavingcount(peopleId)
阅读全文
摘要:如果是标值量函数: select dbo.函数名(参数们)如果是表值函数: select * from 函数名(参数们)
阅读全文
摘要:SQL SERVER2005:SELECT下的UPDATE问题一、对于查询的结果,加计数和(或已用)标志在一些处理中,经常会碰到:当对一组数据进行SELECT处理后,需要对这组数据加标志,表示该组数据已被读取,这样,下一次就可以不需要重复读相同的数据了。然而,我们发现,解决这样问题,却是一个头痛的事。我们知道,在SELECT命令中,是不能使用UPDATE语句的。因此,若按通常的想法,想解决这个问题,分成几步进行:1、先将数据进行UPDATE;2、再进行SELECT。然而我们发现,由于步骤1中,已将数据加了标志,步骤2就无法获得正确的结果。或者这样:1、先进行SELECT2、再进行UPDATE我
阅读全文
摘要:Sql Server锁表在数据库开发过程中,不得不考虑并发性的问题,因为很有可能当别人正在更新表中记录时,你又从该表中读数据,那你读出来的数据有可能就不是你希望得到的数据。可以说有些数据同时只能有一个事物去更新,否则最终显示给用户的数据不是数据库中现存的数据。锁表就限制不同的事物在同一时间内不允许同时操作一张表,实例很简单,可以用select来锁定整张表,那别人就不可能更新或是读取表的记录。select * from dbo.Employee with(holdlock); with关键字来设置锁表的方式。下面是with括号内关键字的书名: NOLOCK(不加锁)此选项被选中时,SQL Ser
阅读全文
摘要:没有使用动态语句直接报错错误的alter proc testpapersasbegin declare @tems nvarchar(max),@zidaun nvarchar(max) set @tems=select * from @tems order by @zidaun exec(@tems)endexec testpapers消息 156,级别 15,状态 1,过程 testpapers,第 1 行关键字 'select' 附近有语法错误。消息 1087,级别 15,状态 2,过程 testpapers,第 1 行必须声明表变量 "@tems"。
阅读全文
摘要:一、说明在SQL Server 的作业中,有些时候我们希望步骤在执行失败后可以重复执行多几次,而我产生这个念头的是因为我在执行某个步骤(这个步骤对分区表进行修改分区方案、分区函数)的时候出现死锁了,如下面描述:消息1205,级别13,状态55,第1 行事务(进程ID 115)与另一个进程被死锁在锁资源上,并且已被选作死锁牺牲品。请重新运行该事务。我想到解决这个问题的方法是重复执行多几次这个步骤(经测试执行几次可行),所以这里就讲讲如果让数据库作业完成这一动作。二、测试实验(一)测试方案:我们在作业中设置了简单的两个步骤,步骤1往表中插入一条数据,步骤2更新这条记录,让计数器+1,这就测试了成功
阅读全文
摘要:http://www.cnblogs.com/gaizai/category/225959.html一、场景经过一段时间表分区的实践,我们先对表进行分区(形成表分区模板);表数据搬迁模板(迁移数据到新的分区表);分区管理自动化(自动化进行交换分区);详情请见:SQL Server表分区实战系列(文章索引)再进一步延伸,我们就需要对这些做了表分区的库进行备份了,之前写过一篇博文:SQL Server备份和还原全攻略,这里描述了MSSQL的一些备份概念,今天这里虽然没有用到,但是像差异备份在备份比较大的情况下使用就会有很好的效果。今天我们就来说说如何使用MSSQL的维护计划来备份表分区的。假设这样
阅读全文
摘要:检查SQL Server 2005数据库只有SQL Server 2005 标准版、企业版和开发版才可以建立数据镜像。其他版本即Express只能作为见证服务器。如果实在不清楚什么版本,执行如下语句查看:1select@@version;若要对此数据库进行数据库镜像,必须将它更改为使用完整恢复模式。若要用 Transact-SQL 实现此目的,请使用 ALTER DATABASE 语句:1USEmaster;2ALTERDATABASE<DatabaeName>3SETRECOVERYFULL;4二、主备实例互通实现互通可以使用域或证书来实现,考虑实现的简单,以下选取证书的方式实现
阅读全文
摘要:前言前段时间在忙数据库的表分区,经常会去上网找资料,但是在找到都是测试表分区的文章,没有实战经验的,所以在我把表分区运用到实际项目中的时候遇到了很多问题。比如:如何确认分区字段?分区字段与聚集索引的区别与联系?如何存储分区索引?MSDN说交换分区是以秒计算,但执行40G交换分区超时?如何解决分区不断增长的问题?自动化交换分区的陷阱?这些问题都只能自己在实战中摸索答案,后来我写了几篇关于这些问题的博文,希望对那些需要实战帮助的童鞋有一点提示和帮助。希望大家拍砖。实战说明某生产数据库大小已经有800G了,每天进库数据量大概有150W条记录(数据空间大概为7G),而服务器现在已经没有太多的磁盘空间了
阅读全文
摘要:一、表分区文章索引SQL Server 合并(删除)分区解惑SQL Server 2005 分区模板与实例SQL Server 动态生成分区脚本SQL Server 2005 自动化删除表分区设计方案二、目的这段时间,在SQL Server的生产环境中尝试了不同方式的表分区,积累了一些这方面的经验,这里就表分区的一些注意事项做些记录。三、注意事项1. 表分区的边界值问题,在使用Left和Right的时候需要注意,特别是在时间分割上需要特别注意,通常情况下,以00:00:00.000是最可靠的,这种分割就需要使用到Right,如果是Left的话就需要设置为23:59:59.997;更多信息请参考
阅读全文

浙公网安备 33010602011771号