代码改变世界

随笔分类 -  SQL::杂项

游标、获取本地本地多个文件、Excel数据导入、跨服务器数据拷贝、行转列示例

2013-10-29 13:05 by Andy Ge, 365 阅读, 收藏,
摘要: declare @dirPath varchar(200)='C:\Users\Administrator\Desktop\待处理数据\顺江学校4\'--------------------------------------------------------------------------------------------获取本地文件夹下多个文件----------------------------------------------------------if(OBJECT_ID('ff')>0) drop table ffcreate ta 阅读全文

SQLServer2005删除log文件和清空日志的方案

2013-09-23 10:42 by Andy Ge, 376 阅读, 收藏,
摘要: 数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQLServer数据库都有log文件,log文件记录用户对数据库修改的操作。可以通过直接删除log文件和清空日志在清除数据库日志。一、删除LOG1、分离数据库。分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离。勾选删除连接分离后在数据库列表将看不到已分离的数据库。2、删除LOG文件3、附加数据库,附加的时候会提醒找不到log文件。删除数据库信息信息的ldf文件:附加数据库之后将生成新的日志文件log,新的日志文件的大小事504K。也可以通过命令才完成以上的操作:use master 阅读全文

实战 SQL Server 2008 数据库误删除数据的恢复

2013-05-10 16:49 by Andy Ge, 225 阅读, 收藏,
摘要: 关键字:SQL Server 2008, recover deleted records今天有个朋友很着急地打电话给我,他用delete语句误删除了SQL Server 2008数据库中两个表中的所有记录,而这个数据库之前没有任何备份。让我帮他解决一下,不然他要赔偿客户很多钱。SQL Server中误删除数据的恢复本来不是件难事,从事务日志恢复即可。但是,这个恢复需要有两个前提条件:1. 至少有一个误删除之前的数据库完全备份。2. 数据库的恢复模式(Recovery mode)是“完整(Full)”。针对这两个前提条件,会有三种情况:情况一、如果这两个前提条件都存在,通过SQL语句只需三步就能 阅读全文

如何把SQLServer数据库从高版本降级到低版本?

2013-05-05 12:54 by Andy Ge, 301 阅读, 收藏,
摘要: 由于目前还广泛使用着SQLServer2000,很多公司又想使用新的SQLServer,从而直接【分离/附加】或者【备份/还原】数据库,在不同版本之间存放。往往就会遇到版本不兼容的问题。前几天遇到了从我本机2008R2上备份的一个数据库还原到2008上面时报错:从运行版本10.50.2500(2008R2是10.50)和10.00.1600(2008是10.00)中可以看出这个版本不兼容问题,大部分情况下,从低版本升级到高版本,只要不是跨度太大,如2000升级到2012,都不会怎么报错。除非使用了一些新版本不兼容的特性如*=来实现left join的语句。但是就像上图那样,从高版本还原到低版本 阅读全文

SQl执行错误!SQl Server检测到基于一致性的逻辑I/O 错误 校验 和不正确

2013-05-04 20:12 by Andy Ge, 619 阅读, 收藏,
摘要: 刚开始在用一个叫BookShop的数据库,能正常使用,然后我把它分离了,将另一个同名的库复制替换掉了原来的库文件,再附加上去,然后执行语句时就出现了这个错误,怎么回事?求高手指教很明显可以看出是Book表出问题了执行一下Sql语句 :select * from Book 应该是报你这个图中一样的错有2种方法:1、use RUM go ALTER DATABASE RUM SET SINGLE_USERDBCC CHECKDB (RUM, repair_allow_data_loss) with NO_INFOMSGS把上面的RUM换成你自己的数据库名就行了2、删除出问题的表的Log,然后手动构 阅读全文

sql server转移tempdb数据库的物理存放位置

2013-04-13 00:26 by Andy Ge, 352 阅读, 收藏,
摘要: 将 tempdb 从其在磁盘上的当前位置移动到其他磁盘位置。由于每次启动 MSSQLSERVER 服务时都会重新创建 tempdb,因此不需要从物理意义上移动数据和日志文件。1 确定 tempdb 数据库的逻辑文件名称以及在磁盘上的当前位置。SELECT name, physical_nameFROM sys.master_filesWHERE database_id = DB_ID('tempdb');GO2 使用 ALTER DATABASE 更改每个文件的位置USE master;GOALTER DATABASE tempdbMODIFY FILE (NAME = tem 阅读全文

NULLIF和ISNULL

2013-04-11 11:17 by Andy Ge, 254 阅读, 收藏,
摘要: SQL Server 中有两个参数,语法: ISNULL(check_expression, replacement_value)check_expression 与 replacement_value 数据类型必须一致 如果 check_expression 为 NULL,则返回 replacement_value 如果 check_expression 不为 NULL,则返回 check_expressionNULLIF 用于检查两个表达式,语法:NULLIF(expression, expression)如果两个 expression 相等,则返回 NULL,该 NULL 为第一个 e. 阅读全文

CareySon SQL Server文章目录

2013-03-25 08:22 by Andy Ge, 527 阅读, 收藏,
摘要: SQL Server的文章写了也不少了,一直没有做一个目录方便大家阅读。现在把之前写的关于SQL Server的文章做一个目录,方便大家阅读 SQL入门 SQL查询入门(上篇) SQL查询入门(中篇) SQL查询入门(下篇)SQL进阶 T-SQL查询进阶--深入理解子查询 T-SQL查询进阶--基于列的逻辑表达式 T-SQL查询进阶--流程控制语句 T-SQL查询进阶--变量 T-SQL查询进阶--数据集之间的运算 T-SQL查询进阶-10分钟理解游标 T-SQL查询进阶--深入浅出视图 T-SQL查询进阶--详解公用表表达式(CTE) T-SQL查询进阶--理解SQL Server中索引的. 阅读全文

T-SQL使用小结

2013-01-07 07:57 by Andy Ge, 374 阅读, 收藏,
摘要: --1.存储过程和自定义函数都可以实现递归调用,函数定义时,参数需要放在括号内,并且有返回值,函数调用时,需要通过设定变量值或者在查询语句中,参数放在括号内,存储过程则使用exec uspName params...,参数不需要放在括号内。--函数定义和使用Create function [dbo].[GetBitNumber]( @s varchar(4))returns int asbegin set @s = upper(@s) declare @r int = 0; if(CHARINDEX('A',@s)>0) set @r+=1; i... 阅读全文

exec和临时表

2013-01-07 07:28 by Andy Ge, 470 阅读, 收藏,
摘要: exec中的语句能够访问主方法中创建的临时表如:select 1 as a into #ttexec('select * from #tt')能正确返回。但如果在exec中创建了临时表,在主程序中是访问不到的exec('select 1 as a into #tt')select * from #tt将会报错,找不到#tt也就是说在调用的子方法中创建了临时表,在退出子方法时将会被删除,但是在父方法中创建的临时表,在子方法中可以访问。该规则适用于在一个存储过程中创建了临时表,如果该存储过程调用了其他的存储过程,这个被调用的存储过程同样可以访问到该临时表。 阅读全文

SQL 2008 values

2012-04-04 15:28 by Andy Ge, 200 阅读, 收藏,
摘要: --SQLServer2008中新增功能:可以使用单个Insert命令插入多行。CreatetableDemo_Values(PKIDintnotnullidentity(1,1)primarykey,DNameNvarchar(20)null,DCodeNVarchar(30)null,DDatedatetimenull)go--thisSQLisonlyforSQLServer2008InsertintoDemo_Values(DName,DCode,DDate)values('DemoA','AAA',GETDATE()),('DemoB' 阅读全文

xp_cmdshell (Transact-SQL)

2011-04-26 16:55 by Andy Ge, 691 阅读, 收藏,
摘要: SQL Server 2008 R2 生成 Windows 命令 shell 并以字符串的形式传递以便执行。任何输出都作为文本的行返回。 Transact-SQL 语法约定 语法 xp_cmdshell { 'command_string' } [ , no_output ] 参数 ' command_string ' 包含要传递到操作系统的命令的字符串。command_string 的数据类型为 varchar(8000) 或 nvarchar(4000),无默认值。command_string 不能包含一对以上的双引号。如果 command_string 中 阅读全文

SQL Server 表变量陷阱

2011-04-17 17:09 by Andy Ge, 296 阅读, 收藏,
摘要: declare@iint=0while(@i<5)begindeclare@dttable(idint)insertinto@dtselect@iselect*from@dtset@i+=1end上述语句并不是每次输出一条,而是累积上面的所有的记录如下:(1 行受影响)id-----------0(1 行受影响)(1 行受影响)id-----------01(2 行受影响)(1 行受影响)id-----------012(3 行受影响)(1 行受影响)id-----------0123(4 行受影响)(1 行受影响)id-----------01234(5 行受影响)也就是说在sQL循环 阅读全文

动态分段统计SQL

2011-03-02 14:17 by Andy Ge, 519 阅读, 收藏,
摘要: --1.准备数据--1.1创建表结构,按照每所学校1000人,共30所学校,满分760分计算if(object_id('tempdb..#baseT')>0)droptable#baseTcreatetable#baseT(namevarchar(20),codevarchar(20),studentIduniqueidentifier,totalScoredecimal(4,1))if(object_id('tempdb..#schoolT')>0)droptable#schoolTcreatetable#schoolT(idintidentity 阅读全文

SQL优化34条(转)

2010-11-23 10:19 by Andy Ge, 258 阅读, 收藏,
摘要: 我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!(1)选择最有效率的表名顺序(只在基于规则的优化器中有效):ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表... 阅读全文

移植Reporting Service报表到项目报表

2009-09-11 22:25 by Andy Ge, 329 阅读, 收藏,
摘要: 1.将已有的*.rdl文件拷贝到项目指定的目录,修改扩展名为*.rdlc。2.添加DataSet类型文件,在该文件的设计视图上右键鼠标,选择添加DataTable/DataAdapter等。通常通过DataAdapter添加自定义查询(可以带有参数),或者存储过程等。这样生成的DataAdapter类的Fill/GetData方法将包含对应的参数。3.双击打开上面的报表,菜单Report-->... 阅读全文