易截截图软件、单文件、免安装、纯绿色、仅160KB

SqlServer中用@@IDENTITY取最新ID不准的问题

一个网友问我一个关于@@IDENTITY的问题。他的数据库中有一个存储过程,有 insert语句,然后马上就用SELECT @@IDENTITY取刚插入的ID值,通常这是没有问题的,但是问题是ID实际上已经达到了100多万了,而 SELECT @@IDENTITY  返回的只有很小的值(才30多),令人费解。
我开始也不太明白,问他先别管@@IDENTITY,新插入记录,ID是多少。他说ID是100多万那么大的数。不是才几十那么小。我帮他分析可能性,是不是identity到了最大限,且identity最大是2的64次方。他说int  最大值是 2,147,483,647,他的ID离溢出还早呢, 但是 return @@IDENTITY 就是 很小的值(只有几十)。我然后又帮他分析道,是不是ID的值被重置过?他说不是,他说现在新插入的 id 就是 170多万。说到这里,我了解了一点了。我建议他用scope_identity(table_name)函数来取指定表的IDENTITY。我们以前有过经验,@@IDENTITY和IDENTITY_CURRENT()都不是很理想,因为它们会受当前表的范围影响。通常有触发器就会引起@@IDENTITY不能正确地取值,IDENTITY_CURRENT()也是如此。幸好有scope_identity(table_name)函数。在这种情况下就只能用这个。这时他才想起来,他的表有触发器。呵呵,迟了点。我建议他最好不要用触发器。能避免就避免。他说这个触发器是可以用别的方式代替的。他会试一下用scope_identity(table_name)函数和去除触发器。


相关文档:

PHP查询显示SqlServer中的中文

因为工作需要,数据库使用的MS SQL Server2005,而默认的排序规则是SQL_Latin1_General_CP1_CI_AS。创建了一个表,因为需要存储中文信息,Address字段的类型是nvarchar(255)。
此时使用php来连接sql server,页面的编码和文件的编码都是UTF-8,查询此Address字段,显示在页面上是???之类的。怎么解决?
使用
iconv('iso- ......

C#关于sqlserver中读取image类型

今天在网上找了许久关于sqlserver中存储image类型和读取image的方法,可是都是那么一点,故在此罗列一下,希望可以帮助大家。
首先是关于dataGridView的绑定。代码见下
private void button_show_Click(object sender, EventArgs e)
{
string sqlText = "server=localhost;initial catalog=Test; ......

sqlserver查询(时间相关)

select a.UserName 用户名,b.LoginName 号码,c.MenuTitle 标题,max(a.AccessTime)访问时间  from JfAccessLog a,OaUser b,JfMenu c where CONVERT(char,a.AccessTime,112)=CONVERT(char,GETDATE(),112)  and a.UserId=b.UserId and a.MenuId=c.MenuId and a.MenuId=@menu group by a.UserName,b.LoginName,c.Menu ......

c#中高效的excel导入sqlserver的方法

本文转自:http://blog.csdn.net/jinjazz/archive/2008/07/14/2650506.aspx
    将oledb读取的excel数据快速插入的sqlserver中,很多人通过循环来拼接sql,这样做不但容易出错而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代 ......

SqlServer插入慢的问题解决

这个是我加入的QQ群里面一个网友问的问题。他说一个表做一个INSERT都会超时。正困惑呢,向群里面的人求助。我刚好对这方面知道点,就回答了说要优化聚集索引。他不明白具体该怎么做,似乎也不知道什么是聚集索引。我对他说你可以看看你插入记录时的磁盘IO是否比较多,他说他的磁盘已经换成了RAID,不好查看磁盘IO。OK, 我继 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号