静坐常思己过,闲谈莫论人非,能受苦乃为志士,肯吃亏不是痴人,敬君子方显有德,怕小人不算无能,退一步天高地阔,让三分心平气和,欲进步需思退步,若着手先虑放手,如得意不宜重往,凡做事应有余步。持黄金为珍贵,知安乐方值千金,事临头三思为妙,怒上心忍让最高。切勿贪意外之财,知足者人心常乐。若能以此去处事,一生安乐任逍遥。

自动增加ID出现不连续可能出现的问题

作者:大鹏 发布于:2009-4-24 12:22 Friday 分类:Asp.Net 2.0
标签: 服务器 sqlserver2005 asp databasemssql-2005

昨天总部对我们公司的HR系统进行审计,在审查系统操作日志时,发现日志记录表的自动增长ID有不连续的情况,如是怀疑可能有DBA在后台删除过某些记录,当时看到这种情况时都比较吃惊。后来一想可能是由于事务回滚所引起的,于是做了一个测试,发现事务回滚后,自动增长ID真的可以跳过,下面是测试的一个代码

[code]
create table aaa (
  id int identity(1,1),
  names nvarchar(100),
  primary key (id)
)

Go

begin transaction test

  insert into aaa (names) values('aaa');
  insert into aaa (names) values('aaa');
  insert into aaa (names) values('aaa');

rollback transaction test

Go

insert into aaa (names) values('aaa');
select * from aaa
Go
[/code]


评论(0) 引用(0) 浏览(7512)

请在类型名称中显式指定程序集:asp.net错误解决方法

作者:大鹏 发布于:2009-4-2 10:55 Thursday 分类:Asp.Net 2.0
标签: vs2005 sqlserver2005 vs2008

Asp.Net 2.0 会自动编译App_Code下面的源码到默认临时程序集缓存目录,但是Bin目录下已经有一个编译过的Dll文件了,造成Asp.Net不知道调用的是哪个程序集。提示显示指定程序集,该如何指定呢?
解决方法:把Bin目录改名或App_Code任意一个改名都可以解决问题,但是不方便调试。主要是1.1和2.0的兼容性调试。
[code]
“/”应用程序中的服务器错误。

[i]分析器错误[/i]

说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。

分析器错误信息: 类型“Rimifon.Business.Default”不明确: 它可能来自程序集“E:\Documents\Business\bin\Rimifon.DLL”或程序集“C:\RIMIFON\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\cc9279c5\e024b2d0\App_Code.brg5wkzg.DLL”。请在类型名称中显式指定程序集。

源错误:
行 1:  <%@page inherits=Rimifon.Business.Default%><Html>行 2:  <head><style>行 3:  @import "/Client/Rimifon.css";
源文件: /default.aspx    行: 1

版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.210
[/code]


评论(0) 引用(0) 浏览(44570)

sql server从 INSERT 返回 IDENTITY (自增长列)

作者:大鹏 发布于:2009-2-16 16:29 Monday 分类:Asp.Net 2.0
标签: 数据库 .net mssql-2005 c# sqlserver2005 vs2008

[b]从 INSERT 返回 IDENTITY [/b]
如何在执行 SQL INSERT 后检索 IDENTITY 值。通常,问题不在于如何编写检索值的查询,而在于在哪里以及何时进行检索。在 SQL Server 中,下面的语句可用于检索由最新在活动数据库连接上运行的 SQL 语句所创建的 IDENTITY 值:

SELECT @@IDENTITY
这个 SQL 语句并不复杂,但需要记住的一点是:如果这个最新的 SQL 语句不是 INSERT,或者您针对非 INSERT SQL 的其他连接运行了此 SQL,则不会获得期望的值。您必须运行下列代码才能检索紧跟在 INSERT SQL 之后且位于同一连接上的 IDENTITY,如下所示:

INSERT INTO Products (ProductName) VALUES ('Chalk')
SELECT @@IDENTITY
在一个连接上针对 Northwind 数据库运行这些查询将返回一个名称为 Chalk 的新产品的 IDENTITY 值。所以,在使用 ADO 的 Visual Basic? 应用程序中,可以运行以下语句:

阅读全文>>


评论(1) 引用(0) 浏览(4583)

SQl跨服务器查询

作者:大鹏 发布于:2008-12-25 16:38 Thursday 分类:Asp.Net 2.0
标签: mssql-2005 sqlserver2005

[codes=sql]
SQl跨服务器查询的二种实现方法:
  select   *   from   OPENDATASOURCE(  
                    'SQLOLEDB',  
                    'Data   Source=远程ip;User   ID=sa;Password=密码'  
                    ).库名.dbo.表名  
    
  insert   本地库名..表名   select   *   from   OPENDATASOURCE(  
                    'SQLOLEDB',  
                    'Data   Source=远程ip;User   ID=sa;Password=密码'  
                    ).库名.dbo.表名  
    
  或使用联结服务器:  
  EXEC   sp_addlinkedserver   '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL   Server};SERVER=远程名;UID=用户;PWD=密码;'  
  exec   sp_addlinkedsrvlogin     @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'  
  GO  
  然后你就可以如下:  
  select   *   from   别名.库名.dbo.表名  
  insert   库名.dbo.表名   select   *   from   别名.库名.dbo.表名  
  select   *   into   库名.dbo.新表名   from   别名.库名.dbo.表名  
  go

[/codes]


评论(0) 引用(0) 浏览(2930)

SQL Server中获取数据库中各表的大小

作者:大鹏 发布于:2008-12-23 12:49 Tuesday 分类:Asp.Net 2.0
标签: mssql-2005 vs2005 sqlserver2005

使用exec sp_spaceused @tbname 获取表所占空间大小信息
[codes=sql]
CREATE PROCEDURE get_tableinfo
AS
  if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  create table tablespaceinfo --创建结果存储表
  (nameinfo varchar(50) ,
  rowsinfo int , reserved varchar(20) ,
  datainfo varchar(20) ,
  index_size varchar(20) ,
  unused varchar(20) )
  
  delete from tablespaceinfo --清空数据表
  
  declare @tablename varchar(255) --表名称
  
  declare @cmdsql varchar(500)
  
  DECLARE Info_cursor CURSOR FOR
  select o.name
  from dbo.sysobjects o where OBJECTPROPERTY(o.id, N'IsTable') = 1
  and o.name not like N'#%%' order by o.name
  
  OPEN Info_cursor
  
  FETCH NEXT FROM Info_cursor
  INTO @tablename
  
  WHILE @@FETCH_STATUS = 0
  BEGIN
  
  if exists (select * from dbo.sysobjects where id = object_id(@tablename) and OBJECTPROPERTY(id, N'IsUserTable') = 1)
  execute sp_executesql
  N'insert into tablespaceinfo exec sp_spaceused @tbname',
  N'@tbname varchar(255)',
  @tbname = @tablename
  
  FETCH NEXT FROM Info_cursor
  INTO @tablename
  END
  
  CLOSE Info_cursor
  DEALLOCATE Info_cursor
  GO

[/codes]

---------------------
执行存储过程
exec get_tableinfo
查询各表信息:
select * from tablespaceinfo order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc


评论(0) 引用(0) 浏览(2884)

使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)

作者:大鹏 发布于:2008-11-19 22:45 Wednesday 分类:Asp.Net 2.0
标签: 数据库 .net mssql-2005 c# vs2005 sqlserver2005 vs2008

原文地址:http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx
[url=http://www.dotnetbips.com/articles/70eff218-3da0-4f6f-8f8d-eeea65193f2c.aspx][原文源码下载][/url]


[翻译]使用C#创建SQL Server的存储过程(Visual Studio 2005 + SQL Server 2005)

原文发布日期:2007.06.17
作者:Bipin Joshi
翻译:webabcd


介绍
通常,开发人员使用的是T-SQL来创建SQL Server的存储过程、函数和触发器。 而现在的SQL Server 2005已经完全支持.NET通用语言运行时(CLR)了。 这就意味着,你可以使用.NET的语言,如C#、VB.NET之类的来开发SQL Server的存储过程、函数和触发器。 SQL Server 和 CLR 的集成给我们带来了n多好处,如实时编译、类型安全、增强的安全性以及增强的编程模型等。 本文中,我将向大家演示如何使用C#创建SQL Server的存储过程。

阅读全文>>


评论(0) 引用(0) 浏览(64611)

使用C#实现SQL Server2005的扩展聚合函数

作者:大鹏 发布于:2008-11-18 18:12 Tuesday 分类:Asp.Net 2.0
标签: 数据库 mssql-2005 c# sqlserver2005 vs2008

[code]select xh, dbo.joinstr(value) from t_table group by xh[/code]

其中joinstr是一个聚合函数,功能是将每一组的某个字符串列的值首尾连接。上面的SQL也可以查询图2所示的结果。但遗憾的是,sql server2005并未提供可以连接字符串的聚合函数。下面我们就来使用C#来实现一个扩展聚合函数。

阅读全文>>


评论(0) 引用(0) 浏览(2757)

Access与sql server的语法区别

作者:大鹏 发布于:2008-11-16 22:37 Sunday 分类:考试相关
标签: mssql-2005 sqlserver2005

[code]
号 | 简述 | Access语法 | SqlServer语法 | Oracle语法 | DB2语法 | 解决方案
01 | 系统时间 | Date()  | GETDATE()  | SYSDATE  | GetSysTimeStr
02 | 连接字符串 | &  |  +  |  ||  |  +  |  GetConcatStr  
03 | 截取字符串 | SubString | SubStr | SubString | SubString | GetSubStr  
04 | 小写字符串 | LCase | Lower | Lower | Lower | GetLowerStr  
05 | 大写字符串 | UCase | Upper | Upper | Upper | GetUpperStr  
06 | 查找字符串 | InStr | InStr | CharIndex | InStr | GetFindStr  
07 | 替换空值 | IIF+IsNull | Coalesce  | Nvl | Coalesce | GetNullStr  
08 | 条件取值 | IIF |  Case+When+Else | DeCode或Case | IIF | GetCaseStr
09 | 字段类型转换 | Str、var、….  | Convert或cast | To_Char,To_Number.  | GetConvertStr | GetConvertStr  
10 | 日期字符串 |‘2004-10-9' | #2004-10-19# |  ‘2004-10-9'  |           | GetDateStr  
11 | 最大值加1 |     |      |      |      | GetNextNumStr
12 | Like语句函数 | Like ‘101* | Like ‘101%' |  Like ‘101%' |      |  GetLikeStr  
[/code]


评论(0) 引用(0) 浏览(7754)

SQL技巧(根据年龄段统计人数)

作者:大鹏 发布于:2008-11-16 22:34 Sunday 分类:考试相关
标签: mssql-2005 sqlserver2005


统计不同年龄段的人数,Oracle中可以使用decode函数来完成,但在SqlServer中只能使用Case  When Then 了
[code]select
sum(decode(sign(age - 20),-1,1,0)),
sum(decode(sign(age - 20),-1,0,(decode(sign(age - 30),-1,1,0)))),
sum(decode(sign(age - 30),-1,0,(decode(sign(age - 40),-1,1,0)))),
sum(decode(sign(age - 40),-1,0,(decode(sign(age - 50),-1,1,0)))),
sum(decode(sign(age - 50),-1,0,1))
from xxx; [/code]


评论(0) 引用(0) 浏览(8129)

sql server2005恢复只有mdf文件的数据库

作者:大鹏 发布于:2008-11-6 14:45 Thursday 分类:Asp.Net 2.0
标签: mssql-2005 sqlserver2005

SQL Server 2005 如何在没有日志文件的情况下如何恢复MDF数据库文件(测试通过)
在sql server 2005 数据库中,一次误操作,分离数据库后,直接将日志文件删除掉了,后进行附加出错,无法附加上去,经过如下解决方案,数据库附加成功,操作如下:
第一步:先建立一个同名数据库,停止SQL SERVER2005,将原来的.mdf数据库文件覆盖刚新建的.mdf数据库文件,重新启动数据库。
第三步:在查询分析器中运行如下代码:

alter database 数据库名  set emergency  '--将数据库设置为紧急状态

use master

declare @databasename varchar(255)

set @databasename='数据库名'         '--你的.mdf文件文件名

exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态




以上代码请同时运行,可能会出现“数据库其他多个文件与数据库主文件不匹配....”错误,请多次重试执行以上代码 。


评论(0) 引用(0) 浏览(3361)

如何启用远程错误(Reporting Services 配置)

作者:大鹏 发布于:2008-7-22 9:35 Tuesday 分类:Asp.Net 2.0
标签: sqlserver2005 reportingservice

可以将报表服务器上的服务器属性设置为返回有关出现在远程服务器上的错误条件的其他信息。如果错误消息中包含文本“有关此错误的详细信息,请导航到本地服务器上的报表服务器或启用远程错误”,则可以将 EnableRemoteErrors 属性设置为访问可帮助您解决问题的其他信息。

注意:  
您可以编辑报表服务器数据库中的 ConfigurationInfo 表,将 EnableRemoteErrors 设置为 True,但是如果报表服务器正在使用当中,则应使用脚本来修改设置。


通过脚本启用远程错误
创建文本文件并将以下脚本复制到该文件中。

阅读全文>>


评论(0) 引用(0) 浏览(3379)

利用C#将Excel中将连续多行相同数据项合并

作者:大鹏 发布于:2008-7-14 21:26 Monday 分类:Asp.Net 2.0
标签: 数据库 .net mssql-2005 c# sqlserver2005 excel reportingservice

最后一直在研究Reporting services中将连续多行相同的数据项合并的问题,最后还是没有找到一个好的解决办法。显然可以使用“隐藏重复数据(HideDuplicates 属性)”将相同数据行显示为空,但是单无格边框还是无法隐藏,而且无法将重复数据进行竖直居中。
于是想到一个将数据生成Excel文件再将连续多行相同数据进行合并的办法,感觉这个办法还是比较不错的。
点击在新窗口中浏览此图片

阅读全文>>


评论(0) 引用(0) 浏览(19726)

left join,inner join,right join,cross join,full join的区别

作者:大鹏 发布于:2008-3-20 10:32 Thursday 分类:Asp.Net 2.0
标签: 服务器 数据库 mssql-2005 sqlserver2005

1,总论: LEFT JOIN返回”first_table”中所有的行尽管在” second_table”中没有相匹配的数据。

RIGHT JOIN返回”second_table”中所有的行尽管在”first_table”中没有相匹配的数据。

INNER JOIN返回的结果集是两个表中所有相匹配的数据。


没听明白?请继续看下文分解。

2,分解:

还是用一个例子来的痛快些。。。

阅读全文>>


评论(0) 引用(0) 浏览(9960)

取得Excel表结构

作者:大鹏 发布于:2008-3-11 22:56 Tuesday 分类:Asp.Net 2.0
标签: 数据结构 数据库 c# sqlserver2005 excel

今天才发现这个GetOleDbSchemaTable还挺管用的。可以通个这个方法得到Excel文件中有多少个Sheet表并可以列出每个Sheet表的结构,包括表中字段的结构是否主键等信息。和ADO.NET 中 DataReader 对象的 GetSchemaTable很类似。

阅读全文>>


评论(0) 引用(0) 浏览(4493)

SQLServer 远程备份和恢复

作者:大鹏 发布于:2008-2-13 0:17 Wednesday 分类:Asp.Net 2.0
标签: sqlserver2005

--以下语句要在查询分析器中逐步逐句执行,删除注释标识"--"执行,完了再加上"--",接着执行下一句
--第一步: 在备份机建立共享文件夹 在程序代码中调用(或者CMD窗口)
--master..xp_cmdshell 'md D:\SqlBak'
--master..xp_cmdshell 'net share SqlBak=D:\SqlBak'

--第二步: 建立共享信用关系
--exec master..xp_cmdshell 'net use \\192.168.1.101\SqlBak 2008 /user:domain\wufeng1'

阅读全文>>


评论(0) 引用(0) 浏览(3023)