分类目录归档:Sql Server

MS SQL是指微软的SQL Server数据库.

合并UPDATE和INSERT语句,使用merge来提高性能–merge用法

merge用来合并UPDATE和INSERT语句,有时候我们需要先判断数据库里是否有该条件的数据,没有的话插入一条新的,有的话更新数据。这时候使用merge有时可以提高性能。 create table test( [id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY, tkey nvarchar(50), tvalue nvarchar(100) ) merge sql语句用法一: merge test as target using (values (‘key_01′,’value_01′)) as source (tkey,tvalue) on target.tkey=source.tkey when matched then update set target.tvalue=source.tvalue when not matched then … 继续阅读

发表在 Sql Server | 评论关闭

Sql Server检测到基于一致性的逻辑IO错误

我们有时碰到这个问题会束手无策,备份或者重新生成索引的时候发生检测到基于一致性的逻辑IO错误,这时候可以通过dbcc checkdb或者dbcc checktable来检测一下是否是数据库或者表有问题。如果提示报错,可以通过下面的命令进行修复。 use dbname go ALTER DATABASE dbname SET SINGLE_USER DBCC CHECKDB (dbname, REPAIR_FAST) go 由于dbcc checkdb的repair_allow_data_loss修复需要在单用户模式下进行,所以需要加上ALTER DATABASE dbname SET SINGLE_USER 这行命令。 有时候dbcc checkdb会长时间占用数据库,可以将有问题的表备份后将表删除后重建表,将数据重新导入即可恢复。

发表在 Sql Server | 评论关闭

SET IDENTITY_INSERT的妙用!

数据库在我们的应用中起到不可获取的地位。我们创建表的时候,总是将id设置为自增的,由于自增的id总是唯一的,方便我们对数据库进行增删改。由于自增的id不受我们控制,有时想在已经不存在的id上插入一条数据,直接使用insert语句将会报错。这时候SET IDENTITY_INSERT就起到作用了。例如: 我们创建一张表tb: create table tb ( id int identity(1,1) not NULL PRIMARY KEY, name nvarchar(255) not null ) 随便插入5条数据: INSERT INTO TB (name) VALUES (‘tb1′) INSERT INTO TB (name) VALUES (‘tb2′) INSERT INTO TB (name) VALUES (‘tb3′) INSERT INTO … 继续阅读

发表在 Sql Server | 评论关闭

一劳永逸的解决关于最大用户数和sp_configure的问题

未能连接。已达到最大配置的用户连接数“30”。   系统管理员可以使用   sp_configure   将最大值更改为一个更高的值。  不管使用Window和sql账号都无法连接的解决办法。 可以在命令行下执行以下操作看是否可以恢复,希望对你有帮助。 sqlcmd -A sp_configure ‘show advanced options’,0    –开启高级选项。 go RECONFIGURE     WITH   OVERRIDE sp_configure ‘user connection’,100      –将最大连接数设置为100 go RECONFIGURE     WITH   OVERRIDE sp_configure ‘show advanced options’,0    –关闭启高级选项。 go RECONFIGURE     WITH   OVERRIDE  

发表在 Sql Server | 一条评论

sql Server游标简单实用方法

DECLARE @var varchar(255), –定义变量 DECLARE Table_Cursor CURSOR FOR –定义游标 select col from table OPEN Table_Cursor –打开游标 FETCH NEXT FROM Table_Cursor INTO @var –将表里的字段存入变量 WHILE(@@FETCH_STATUS=0) BEGIN —执行语句 对字段进行处理@var。 FETCH NEXT FROM Table_Cursor INTO @var END CLOSE Table_Cursor DEALLOCATE Table_Cursor

发表在 Sql Server | 评论关闭