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

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) 浏览(7751)

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) 浏览(3360)

MemberShip,角色,WebPart在web.config文件中的参数简述

作者:大鹏 发布于:2008-8-20 23:10 Wednesday 分类:Asp.Net 2.0
标签: .net mssql-2005 c#

[code]
<membership defaultProvider="AspNetSqlProvider">
       <providers>
         <add connectionStringName="在配置文件中已存在的数据库连接字符串名称"
             applicationName="/"
             description=""
             minRequiredPasswordLength="6"
             minRequiredNonalphanumericCharacters="0"
             requiresUniqueEmail="false"
             enablePasswordRetrieval="false"
             enablePasswordReset="false"
             requiresQuestionAndAnswer="false"
             passwordFormat="Hashed"
             name="AspNetSqlProvider"
             type="System.Web.Security.SqlMembershipProvider"/>
      </providers>
    </membership>
[/code]

阅读全文>>


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

Failed to update database &quot;c:inetpubwwwrootWebSite1App_DataASPNETDB.MDF

作者:大鹏 发布于:2008-8-20 16:19 Wednesday 分类:Asp.Net 2.0
标签: .net mssql-2005 c#

Failed to update database "c:\inetpub\wwwroot\WebSite1\App_Data\ASPNETDB.MDF" because the database is read-only."的解决办法

快速的解决当前问题的方法
把两个文件的read-only去掉...加一个app_offline.htm,然后运行,然后去掉加上的app_offline.htm,就可以了.


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

利用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) 浏览(19725)

MS SQLSERVER 中如何得到表的创建语句

作者:大鹏 发布于:2008-4-10 14:37 Thursday 分类:Asp.Net 2.0
标签: mssql-2005

阅读全文>>


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

使用 inserted 和 deleted 表

作者:大鹏 发布于:2008-4-10 8:48 Thursday 分类:Asp.Net 2.0
标签: 数据库 mssql-2005

使用 inserted 和 deleted 表

触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。Microsoft® SQL Server™ 2000 自动创建和管理这些表。可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件;然而,不能直接对表中的数据进行更改。

inserted 和 deleted 表主要用于触发器中:

扩展表间引用完整性。
在以视图为基础的基表中插入或更新数据。
检查错误并基于错误采取行动。
找到数据修改前后表状态的差异,并基于此差异采取行动。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。

阅读全文>>


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

Sql&nbsp;&nbsp;Convert Datetime转换

作者:大鹏 发布于:2008-4-3 13:12 Thursday 分类:Asp.Net 2.0
标签: mssql-2005

  1   101   美国   mm/dd/yyyy    
  2   102   ANSI   yyyy.mm.dd      
  3   103   英国/法国   dd/mm/yy    
  4   104   德国   dd.mm.yy    
  5   105   意大利   dd-mm-yy    
  6   106   -   dd   mon   yy    
  7   107   -   mon   dd,   yy    
  8   108   -   hh:mm:ss    

阅读全文>>


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

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)

在创建用户角色时,app_data文件下自动生成ASPNETDB.MDF数据库

作者:大鹏 发布于:2008-2-2 9:33 Saturday 分类:Asp.Net 2.0
标签: 服务器 数据库 .net mssql-2005 c#

    在创建用户角色时,app_data文件下会自动生成ASPNETDB.MDF数据库,
   如果你不想用自动生成的数据库可以通过修改Web.Config文件来实现,最好名字一样,不然在Asp.net配置那里会有点麻烦。  
[codes=xml]
<connectionStrings>
     <clear/>
     <add name="LocalSqlServer" connectionString="Data Source=.;Initial Catalog=SocanCRM;Persist Security Info=True;User ID=sa;Password="
       providerName="System.Data.SqlClient" />
   </connectionStrings>
[/codes]

阅读全文>>


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

Sql Server 2005列出某表的字段名及Excel行列转换

作者:大鹏 发布于:2008-1-24 18:30 Thursday 分类:Asp.Net 2.0
标签: mssql-2005


[code]select   Name   from   syscolumns   where   ID=object_id('TableName')[/code]
Excel中行列的转换
----如果您在Excel中完成了一个表格的制作,正在庆幸工作终于完成了时,却突然发现需要将表格的行和列对调(尤其是处理数据库中的数据),则您大可不必惊慌,因为在Excel中,调换行和列非常简单。

----首先用鼠标选中A1:D5之间的数据,然后选择菜单“编辑”*“复制”。接着在Excel数据窗口中找一块空白的地方,用鼠标点击一下需放置新数据的块左上角的单元格,比如选择A9。选择菜单“编辑”*“选择性粘贴”,打开“选择性粘贴”对话框(见图2),选中对话框中的“转置”,最后点击“确定”即可。这样Excel就会自动替您将单元格组的行和列对调过来。


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

Sql Server常用函数

作者:大鹏 发布于:2007-12-27 22:48 Thursday 分类:网络资源
标签: mssql-2005

1.DATEADD
在向指定日期加上一段时间的基础上,返回新的 datetime 值。

语法
DATEADD ( datepart , number, date )

参数
datepart

是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft? SQL Server? 识别的日期部分和缩
写。

阅读全文>>


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

sqlServer DateTime数据类型的格式转换

作者:大鹏 发布于:2007-12-25 17:12 Tuesday 分类:Asp.Net 2.0
标签: .net mssql-2005 c# vs2005

数据库中有个字段叫orderTime,是DateTime类型的数据,如果我们用以下SQL语句把它取出来:
select
orderTime
from orders
则会把时间都显示出来,而如果改成下面的SQL语句:
select
orderTime = convert(varchar(10),orderTime,120)
from orders
则会显示YYYY-MM-DD的格式,如:2006-06-13
实际上还有其它的样式,如SQL这样写:

阅读全文>>


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

aspnet_regsql.exe原来还可以这样用

作者:大鹏 发布于:2007-7-6 9:40 Friday 分类:Asp.Net 2.0
标签: .net framework mssql-2005

    昨天晚上搞了几个小时都没能将aspnet_regsql.exe连到我的SQL Server 2005 Express,老是提示错误。今天才发现,aspnet_regsql.exe还能在命令行中使用,下面是从MSDN上复制过来的。

阅读全文>>


评论(2) 引用(0) 浏览(6890)