代码改变世界

随笔分类 -  数据库

运行sql server profiler所需的权限

2015-03-04 17:30 by 假面Wilson, 1981 阅读, 收藏, 编辑
摘要: ********运行Sql Server Profiler所需的权限(performance)*********/--EG. -- 使用TRACE帐户(Performancetest)跟踪Sql Server事件. -- 创建TRACE登陆帐户(Performancetest),并授予其 ALTER... 阅读全文

SQL2008中Merge Into的用法

2014-12-12 15:16 by 假面Wilson, 434 阅读, 收藏, 编辑
摘要: 在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已。下面就是具体的使用说明:首先是对merge的使用说明:merge [into] [目标表]using on 条件when matched 操作 when not mat... 阅读全文

sql server 还原数据库时提示数据库正在使用,无法进行操作的解决方法

2014-12-09 03:40 by 假面Wilson, 1139 阅读, 收藏, 编辑
摘要: 这个问题的原因在于有用户连接了当前要做还原的数据库,这里的用户甚至包括当前要做还原的用户。解决办法就是关闭与要还原数据库的所有连接。①先切换数据库到master数据库。执行语句select * from master..sysprocesses where dbid=db_id( '数据库名称')... 阅读全文

MS SQL 多连接数时修改数据库名称

2014-12-09 03:38 by 假面Wilson, 430 阅读, 收藏, 编辑
摘要: 在MS SQL中,如果你想修改某一个数据库的名称,你可以通过下面几种方法实现。方法一:使用SP_RENAMEDB系统存储过程实现。语法: sp_renamedb [ @dbname = ] 'old_name' , [ @newname = ] 'new_name'例子: 我需要将数据库Test_1... 阅读全文

SQL Server中使用正则表达式

2014-06-19 16:06 by 假面Wilson, 22796 阅读, 收藏, 编辑
摘要: SQL Server 2005及以上版本支持用CLR语言(C# .NET、VB.NET)编写过程、触发器和函数,因此使得正则匹配,数据提取能够在SQL中灵活运用,大大提高了SQL处理字符串,文本等内容的灵活性及高效性。操作步骤:1.新建一个SQL Server项目(输入用户名,密码,选择DB),新建... 阅读全文

SQL SERVER2005 的三种复制类型概述

2014-05-15 09:53 by 假面Wilson, 750 阅读, 收藏, 编辑
摘要: 一、事务复制事务性复制通常从发布数据库对象和数据的快照开始。创建了初始快照后,接着在发布服务器上所做的数据更改和架构修改通常在修改发生时(几乎实时)便传递给订阅服务器。数据更改将按照其在发布服务器上发生的顺序和事务边界,应用于订阅服务器,因此,在发布内部可以保证事务的一致性。事务性复制通常用于服务器... 阅读全文

SQL Server Index详解

2014-01-15 18:11 by 假面Wilson, 224 阅读, 收藏, 编辑
摘要: 最近在进行数据库调优,对索引的使用和其内部的运转一知半解。在园子里看到一篇相关文章非常好。留下印记以便日常查找。http://www.cnblogs.com/xwdreamer/archive/2012/07/06/2579504.html 阅读全文

SQL Server 大数据量insert into xx select慢的解决方案

2014-01-07 11:32 by 假面Wilson, 12214 阅读, 收藏, 编辑
摘要: 最近项目有个需求,把一张表中的数据根据一定条件增删改到另外一张表。按理说这是个很简单的SQL。可是在实际过程中却出现了超级长时间的执行过程。后来经过排查发现是大数据量insert into xx select造成。原因在于当insert into xx select数据量达到10万级别,同时又有Update和Delete操作表。容易造成锁表。经过研究重构了SQL语句问题解决。具体解决方案如下:1.update 和Delete操作当成一个事务处理2.Insert into前先删除索引3.将需要insert into的数据,拆分成不大于3000条/次去执行。 阅读全文

drop有default constraint的column

2013-10-15 15:34 by 假面Wilson, 352 阅读, 收藏, 编辑
摘要: 有时候我们在drop column的时候,会遇到一些default constraints而不能drop,如果我们已经知道constraint name,则可以用下面的语句先把constraint remove掉,然后再drop column。declare @sql nvarchar(1024)set @sql = N'alter table [system] drop constraint DF_system_LastGraceDate'exec sp_executesql @sql如果我们不知道constraint name,我们可以先把他们找出来,然后再remove掉。 阅读全文

sqlserver被锁的表以及如何解锁

2013-10-11 17:24 by 假面Wilson, 601 阅读, 收藏, 编辑
摘要: 查看sqlserver被锁的表以及如何解锁查看被锁表:select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'spid 锁表进程tableName 被锁表名解锁:declare @spid intSet @spid = 57 --锁表进程declare @sql varchar(1000)set @sql='kill '+cast(@spid as v 阅读全文

SQL2005 全文检索超时的解决方案

2013-09-02 17:49 by 假面Wilson, 219 阅读, 收藏, 编辑
摘要: 如果没有 Internet 连接的服务器上运行的 SQL Server 2005 实例中运行全文查询时,您可能会遇到 45 秒钟的延迟详细的解释请查看http://support.microsoft.com/kb/915850/zh-cn解决方案:sp_fulltext_service 'verify_signature', 0;GO 阅读全文

SQL Server 2008 压缩日志

2013-08-28 11:43 by 假面Wilson, 267 阅读, 收藏, 编辑
摘要: USE [master]GOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY SIMPLE --简单模式GOUSE DNNameGODBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)GO '这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询'USE DNName'GO'SELECT file_id 阅读全文

sql server 删除主键、外键、索引、约束的脚本

2013-08-19 11:39 by 假面Wilson, 940 阅读, 收藏, 编辑
摘要: 最近公司项目要升级新版本,涉及到数据库升级中各种约束。亦是整理出如下脚本方便以后查询。--删除全文索引 DECLARE c0 cursor for SELECT'DROP FULLTEXT INDEX ON '+tab.name+';'FROM sys.fulltext_indexes idx JOIN sys.tables tab ON (idx.object_id = tab.object_id);open c0declare @c0 varchar(8000)fetch next from c0 into @c0while(@@fetch_status=0 阅读全文

SQL Server 禁止和启用约束

2013-08-19 10:35 by 假面Wilson, 397 阅读, 收藏, 编辑
摘要: Alter Table XXXnocheck constraint xxxAlter Table XXX check constraint xxx 阅读全文

sql server 查找主键、外键、索引、约束

2013-08-15 15:36 by 假面Wilson, 797 阅读, 收藏, 编辑
摘要: 主键约束SELECTtab.nameAS[表名],idx.nameAS[主键名称],col.nameAS[主键列名]FROMsys.indexes idxJOINsys.index_columns idxCol ON(idx.object_id = idxCol.object_id ANDidx.index_id = idxCol.index_id ANDidx.is_primary_key = 1)JOINsys.tables tabON(idx.object_id = tab.object_id)JOINsys.columns colON(idx.object_id = col.objec 阅读全文

存储过程中得到新增数据的ID

2013-08-09 16:22 by 假面Wilson, 814 阅读, 收藏, 编辑
摘要: 数据库中有自增字段UID存储过程如下:CREATE PROCEDURE AddUser(@Username nvarchar(50),@Email nvarchar(100),@Password nvarchar(50),@UserID int OUTPUT)ASINSERT INTO Users( Username,Email,Password ) VALUES ( @Username,@Email,@Password ) SELECT @UserID = @@Identity GO程序如下:SqlCommand cmd=new SqlCommand("AddUser", 阅读全文

mysql存储过程之游标遍历数据表

2013-06-18 13:16 by 假面Wilson, 65190 阅读, 收藏, 编辑
摘要: 今天写一个mysql存储过程,根据自己的需求要遍历一个数据表,因为对存储过程用的不多,语法不甚熟悉,加之存储过程没有调试环境,花了不少时间才慢慢弄好,故留个痕迹。 1 BEGIN 2 DECLARE Done INT DEFAULT 0; 3 4 DECLARE CurrentLingQi INT; 5 6 DECLARE ShizuName VARCHAR(30); 7 /* 声明游标 */ 8 DECLARE rs CURSOR FOR SELECT NodeName, LingQi FROM socialrelati... 阅读全文

悲观锁和乐观锁

2013-03-08 13:05 by 假面Wilson, 244 阅读, 收藏, 编辑
摘要: 1事务隔离事务隔离是数据库提供的功能。SQL Server通过SET TRANSACTION ISOLATION LEVEL语句设置事务隔离级别:SET TRANSACTION ISOLATION LEVEL{ READ UNCOMMITTED| READ COMMITTED| REPEATABLE READ| SNAPSHOT| SERIALIZABLE}[ ; ]Read Committed是SQL Server的预设隔离等级。1.1READ UNCOMMITTEDRead UnCommitted事务可以读取事务已修改,但未提交的的记录。Read UnCommitted事务会产生脏读(Di 阅读全文

SQL SERVER乐观锁定和悲观锁定

2013-01-24 10:55 by 假面Wilson, 430 阅读, 收藏, 编辑
摘要: 在实际的多用户并发访问的生产环境里边,我们经常要尽可能的保持数据的一致性。而其中最典型的例子就是我们从表里边读取数据,检查验证后对数据进行修改,然后写回到数据库中。在读取和写入的过程中,如果在多用户并发的环境里边,其他用户已经把你要修改的数据进行了修改是非常有可能发生的情况,这样就造成了数据的不一致性。解决这样的办法,SQL Server提出了乐观锁定和悲观锁定的概念,下边我以一个实例来说明如何使用乐观锁定和悲观锁定来解决这样的问题。/* 建立测试表:Card,代表一个真实的卡库,供用户注册.用户要从里边选出一个未使用的卡,也就是F_Flag=0的卡,给用户注册:更新F_Name,F_Time 阅读全文

SqlServer中的更新锁(UPDLOCK)

2013-01-24 10:49 by 假面Wilson, 21615 阅读, 收藏, 编辑
摘要: UPDLOCK.UPDLOCK 的优点是允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改.示例:测试:在另一个查询里:BEGIN TRANSACTIONSELECT * FROM myTable WITH (UPDLOCK) WHERE Id in (1,2,3)waitfor delay '00:00:10'update myTableset [Name]='ZZ' whereId 阅读全文