SQL Server手工插入标识列的方法

如果我们在标识列中插入值,例如:

复制代码 代码如下:

insert member(id,username) values(10,'admin')

则在查询分析器里面会返回错误信息:
[plain]
 引用内容  
服务器: 消息 544,级别 16,状态 1,行 1  
当 IDENTITY_Insert 设置为 OFF 时,不能向表 'member' 中的标识列插入显式值。  
有的情况我们需要手动插入标识列的值,例如删除了一些记录后,标识列并不连续,而我们又想把它补齐。我们利用一个开关可以让愿望变成现实:


复制代码 代码如下:

SET IDENTITY_Insert [TableName] ON

在查询分析器里面这样写:

复制代码 代码如下:

SET IDENTITY_Insert member ON  
insert member(id,username) values(1,'admin')   
SET IDENTITY_Insert member OFF

时间: 2013-10-07

SQL Server 数据库调整表中列的顺序操作方法及遇到问题

SQL Server 数据库中表一旦创建,我们不建议擅自调整列的顺序,特别是对应的应用系统已经上线,因为部分开发人员,不一定在代码中指明了列名.表是否可以调整列的顺序,其实可以自主设置,我们建议在安装后设置为禁止. 那么,如果确实需要调整某一列的顺序,我们是怎么操作的呢? 下面,我们就要演示一下怎么取消这种限制.当然,通过取消限制的演示,相信大家也知道了怎么添加限制了. 需求及问题描述 1)测试表 Test001 (2)更新前 (3)例如,需求为调整 SN5 和SN4的序列 点击保存时报错 修改

SQL Server数据库中伪列及伪列的含义详解

SQL Server中的伪列 下午看QQ群有人在讨论(非聚集)索引的存储,说,对于聚集索引表,非聚集索引存储的是索引键值+聚集索引键值:对于非聚集索引表,索引存储的是索引键值+RowId,这应该是一个常识,对此不作具体详细阐述. 这里主要是提到的RowId引起了一点思考. 那么,这个RowId是个什么玩意?能不能更加直观一点来看看RowId的信息?代表什么含义?这个当然也是可以的. Oracle中的表中有一个伪列的概念,就是在查询表的时候加上select rowid,* from Table,会

在SQL Server中使用CLR调用.NET方法实现思路

介绍 我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法.按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地增强了数据库编程模型. 这使得开发人员可以用任何CLR语言(如C#.VB.NET或C++等)来写存储过程.触发器和用户自定义函数. 我们如何实现这些功能呢? 为了使用CLR,我们需要做如下几步: 1.在.NET中新建一个类,并在这个类里

SQL Server使用row_number分页的实现方法

本文为大家分享了SQL Server使用row_number分页的实现方法,供大家参考,具体内容如下 1.首先是 select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1 生成带序号的集合 2.再查询该集合的 第 1  到第 5条数据 select * from (select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1) a

SQL Server存储过程中编写事务处理的方法小结

本文实例讲述了SQL Server存储过程中编写事务处理的方法.分享给大家供大家参考,具体如下: SQL Server中数据库事务处理是相当有用的,鉴于很多SQL初学者编写的事务处理代码存往往存在漏洞,本文我们介绍了三种不同的方法,举例说明了如何在存储过程事务处理中编写正确的代码.希望能够对您有所帮助. 在编写SQL Server 事务相关的存储过程代码时,经常看到下面这样的写法: begin tran update statement 1 ... update statement 2 ...

SQL Server查看未释放游标的方法

一直以来对SQL SERVER的游标都不怎么感冒,也很少使用SQL Server里面的游标,前几天有一位网友问如何检查数据库里面没有释放的游标,觉得有点意思,就测试验证了一下,顺便整理于此. 会话1:我们模拟一个应用程序或脚本,在打开游标后,忘记关闭.释放游标. DECLARE Cursor_Test CURSOR FORSELECT * FROM dbo.TEST;OPEN Cursor_Test; 此时如果我们如何检查数据库里面没有释放的游标?其实SQL SERVER提供了一个动态管理函数s

SQL SERVER 2000 9003错误的解决方法(只适用于SQL2000)

关于SQLSERVER 9003错误解决方法 只适用于SQL2000: "无法打开新数据库 'POS'.CREATE DATABASE 中止. (Microsoft SQL Server,错误: 9003)" 看是9003错误,就想到可能是由于日志文件的原因,再看数据库文件可能损坏,于是想到dbcc checkdb指令. 方法如下: 1.我们使用默认方式建立一个供恢复使用的数据库(如pos).可以在SQL Server Enterprise Manager里面建立. 2.停掉数据库服务

使用SQL Server 获取插入记录后的ID(自动编号)

最近在开发项目的过程中遇到一个问题,就是在插入一条记录的后要立即获取所在数据库中ID,而该ID是自增的,怎么做?在sql server 2005中有几种方式可以实现. 要获取此ID,最简单的方法就是在查询之后select @@indentity --SQL语句创建数据库和表 复制代码 代码如下: create database dbdemo go use dbdemo go create table tbldemo (     id int primary key identity(1,1),

远程连接局域网内的sql server 无法连接 错误与解决方法

第一个错误"SQL Server 不存在或访问被拒绝"通常是最复杂的,错误发生的原因比较多,需要检查的方面也比较多 .一般说来,有以下几种可能性: 1.SQL Server名称或IP地址拼写有误: 2.服务器端网络配置有误: 3.客户端网络配置有误. 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. 首先,检查网络物理连接: ping <服务器IP地址> 或者 ping <服务器名称> 如果 ping <服务器IP地址> 失败,说