sql server从 INSERT 返回 IDENTITY (自增长列)
作者:大鹏 发布于:2009-2-16 16:29 Monday
分类:Asp.Net 2.0
标签: 数据库 .net mssql-2005 c# sqlserver2005 vs2008
如何在执行 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? 应用程序中,可以运行以下语句:
SQl跨服务器查询
作者:大鹏 发布于:2008-12-25 16:38 Thursday
分类:Asp.Net 2.0
标签: mssql-2005 sqlserver2005
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]
SQL Server中获取数据库中各表的大小
作者:大鹏 发布于:2008-12-23 12:49 Tuesday
分类:Asp.Net 2.0
标签: mssql-2005 vs2005 sqlserver2005
[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
使用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
[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的存储过程。
使用C#实现SQL Server2005的扩展聚合函数
作者:大鹏 发布于:2008-11-18 18:12 Tuesday
分类:Asp.Net 2.0
标签: 数据库 mssql-2005 c# sqlserver2005 vs2008
其中joinstr是一个聚合函数,功能是将每一组的某个字符串列的值首尾连接。上面的SQL也可以查询图2所示的结果。但遗憾的是,sql server2005并未提供可以连接字符串的聚合函数。下面我们就来使用C#来实现一个扩展聚合函数。
Access与sql server的语法区别
作者:大鹏 发布于:2008-11-16 22:37 Sunday
分类:考试相关
标签: mssql-2005 sqlserver2005
号 | 简述 | 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]
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]
sql server2005恢复只有mdf文件的数据库
作者:大鹏 发布于:2008-11-6 14:45 Thursday
分类:Asp.Net 2.0
标签: mssql-2005 sqlserver2005
在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'--将目标数据库置为多用户状态
以上代码请同时运行,可能会出现“数据库其他多个文件与数据库主文件不匹配....”错误,请多次重试执行以上代码 。
MemberShip,角色,WebPart在web.config文件中的参数简述
作者:大鹏 发布于:2008-8-20 23:10 Wednesday
分类:Asp.Net 2.0
标签: .net mssql-2005 c#
<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]
Failed to update database "c:inetpubwwwrootWebSite1App_DataASPNETDB.MDF
作者:大鹏 发布于:2008-8-20 16:19 Wednesday
分类:Asp.Net 2.0
标签: .net mssql-2005 c#
快速的解决当前问题的方法
把两个文件的read-only去掉...加一个app_offline.htm,然后运行,然后去掉加上的app_offline.htm,就可以了.
利用C#将Excel中将连续多行相同数据项合并
作者:大鹏 发布于:2008-7-14 21:26 Monday
分类:Asp.Net 2.0
标签: 数据库 .net mssql-2005 c# sqlserver2005 excel reportingservice
于是想到一个将数据生成Excel文件再将连续多行相同数据进行合并的办法,感觉这个办法还是比较不错的。
MS SQLSERVER 中如何得到表的创建语句
作者:大鹏 发布于:2008-4-10 14:37 Thursday
分类:Asp.Net 2.0
标签: mssql-2005
使用 inserted 和 deleted 表
作者:大鹏 发布于:2008-4-10 8:48 Thursday
分类:Asp.Net 2.0
标签: 数据库 mssql-2005
触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。Microsoft® SQL Server™ 2000 自动创建和管理这些表。可以使用这两个临时的驻留内存的表测试某些数据修改的效果及设置触发器操作的条件;然而,不能直接对表中的数据进行更改。
inserted 和 deleted 表主要用于触发器中:
扩展表间引用完整性。
在以视图为基础的基表中插入或更新数据。
检查错误并基于错误采取行动。
找到数据修改前后表状态的差异,并基于此差异采取行动。
Deleted 表用于存储 DELETE 和 UPDATE 语句所影响的行的复本。在执行 DELETE 或 UPDATE 语句时,行从触发器表中删除,并传输到 deleted 表中。Deleted 表和触发器表通常没有相同的行。
Sql Convert Datetime转换
作者:大鹏 发布于:2008-4-3 13:12 Thursday
分类:Asp.Net 2.0
标签: mssql-2005
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
left join,inner join,right join,cross join,full join的区别
作者:大鹏 发布于:2008-3-20 10:32 Thursday
分类:Asp.Net 2.0
标签: 服务器 数据库 mssql-2005 sqlserver2005
RIGHT JOIN返回”second_table”中所有的行尽管在”first_table”中没有相匹配的数据。
INNER JOIN返回的结果集是两个表中所有相匹配的数据。
没听明白?请继续看下文分解。
2,分解:
还是用一个例子来的痛快些。。。
在创建用户角色时,app_data文件下自动生成ASPNETDB.MDF数据库
作者:大鹏 发布于:2008-2-2 9:33 Saturday
分类:Asp.Net 2.0
标签: 服务器 数据库 .net mssql-2005 c#
如果你不想用自动生成的数据库可以通过修改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]
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就会自动替您将单元格组的行和列对调过来。
Sql Server常用函数
作者:大鹏 发布于:2007-12-27 22:48 Thursday
分类:网络资源
标签: mssql-2005
在向指定日期加上一段时间的基础上,返回新的 datetime 值。
语法
DATEADD ( datepart , number, date )
参数
datepart
是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft? SQL Server? 识别的日期部分和缩
写。
sqlServer DateTime数据类型的格式转换
作者:大鹏 发布于:2007-12-25 17:12 Tuesday
分类:Asp.Net 2.0
标签: .net mssql-2005 c# vs2005
select
orderTime
from orders
则会把时间都显示出来,而如果改成下面的SQL语句:
select
orderTime = convert(varchar(10),orderTime,120)
from orders
则会显示YYYY-MM-DD的格式,如:2006-06-13
实际上还有其它的样式,如SQL这样写:
aspnet_regsql.exe原来还可以这样用
作者:大鹏 发布于:2007-7-6 9:40 Friday
分类:Asp.Net 2.0
标签: .net framework mssql-2005