浏览模式: 普通 | 列表
分类: Sql Server | < | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | >

存储过程编写经验和优化措施

[ 2006-05-18 23:51:41 | 作者: admin ]
http://blog.csdn.net/tutugogo/archive/2006/05/17/742329.aspx

一、适合读者对象:数据库开发程序员,数据库的数据量很多,涉及到对SP(存储过程)的优化的项目开发人员,对数据库有浓厚兴趣的人。  
  二、介绍:在数据库的开发过程中,经常会遇到复杂的业务逻辑和对数据库的操作,这个时候就会用SP来封装数据库操作。如果项目的SP较多,书写又没有一定的规范,将会影响以后的系统维护困难和大SP逻辑的难以理解,另外如果数据库的数据量大或者项目对SP的性能要求很,就会遇到优化的问题,否则速度有可能很慢,经过亲身经验,一个经过优化过的SP要比一个性能差的SP的效率甚至高几百倍。  

  三、内容:  

  1、开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo...

阅读全文…

得到行号 rowid 的方法

[ 2006-05-16 21:55:44 | 作者: admin ]
方法一(采用临时表,2005版本之前)
数据量的时候非常慢
if object_id('tempdb..#') is not null drop table #
go
select identity(int, 1, 1) as id, * into # from test
select * from #
drop table #

方法二 2005支持row_number()

row_number()在2005中被支持:
USE AdventureWorks;
GO
WITH OrderedOrders AS
(SELECT SalesOrderID, OrderDate,
ROW_NUMBER() OVER (order by OrderDate)as RowNumber
FROM Sales.SalesOrderHeader )
...

阅读全文…

关于SQL注入 (比较详细)

[ 2006-05-13 00:22:05 | 作者: admin ]
http://blog.vckbase.com/wangjun/archive/2005/03/16/3645.html

SQL 注入攻击是比较常见的方式:
例如这么一张表格: CREATE TABLE [users] (
        [userid] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
        [password] [varchar] (8) COLLATE Chinese_PRC_CI_AS NOT NULL ,
) ON [PRIMARY]
GO
假如代码是这样的:
<%
userid = TRIM(Request("uid"))

Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=SQLOLEDB;U...

阅读全文…

关于sql server的连接池压力测试 sp_who

[ 2006-05-12 20:45:05 | 作者: admin ]
1、打开网站页面,按住F5健3分钟
2、打开查询分析器,键入sp_who
如果sleeping 超过50,那么恭喜你,你的网站连接池人多的时候肯定要超时

查询分析器操作
use master
exec sp_who

关于 SQL Server 2005 的存储过程

[ 2006-04-27 22:10:17 | 作者: admin ]

关于 sp_dropextendedproc
在 SQL Server 2005 中,sp_dropextendedproc 不会删除系统扩展存储过程。但系统管理员应拒绝 public 角色对扩展存储过程的 EXECUTE 权限。在 SQL Server 2000 中,sp_dropextendedproc 可用于删除任何扩展存储过程。


关于 xp_cmdshell
SQL Server 2005 中引入的 xp_cmdshell 选项是服务器配置选项,使系统管理员能够控制是否可以在系统上执行 xp_cmdshell 扩展存储过程。默认情况下,xp_cmdshell 选项在新安装的软件上处于禁用状态,但是可以通过使用外围应用配置器工具或运行 sp_configure 系统存储过程来启用它,如下面的代码示例所示:
...

阅读全文…

Sql Server 常用函数

[ 2005-11-13 23:11:26 | 作者: admin ]
1,统计函数 avg, count, max, min, sum

多数聚会不统计值为null的行。可以与distinct一起使用去掉重复的行。可以与group by 来分组

2, 数学函数

SQRT
ceiling(n) 返回大于或者等于n的最小整数
floor(n), 返回小于或者是等于n的最大整数
round(m,n), 四舍五入,n是保留小数的位数
abs(n)
sign(n), 当n>0, 返回1,n=0,返回0,n<0, 返回-1
PI(), 3.1415....
rand(),rand(n), 返回0-1之间的一个随机数
3,字符串函数

ascii(), 将字符转换为ASCII码, ASCII('abc') = 97
char(), ASCII 码 转换为 字符
low(),upper()
...

阅读全文…

原创日志 sql server 中关于字符串的截取

[ 2005-11-13 23:10:39 | 作者: admin ]
[test]表的按varchar类型字段demo排序的实现
demo字段
---------------
1LP1
1LP2
2LP1
3LP3
19LP23
23LP1

首先显示测试
---------------------------------
SELECT CAST(LEFT(demo, CHARINDEX('LP', demo) - 1) AS int) AS Expr1,
            CAST(RIGHT(demo, LEN(demo) - CHARINDEX('LP', demo) - 1) AS int) AS Expr2
FROM test

结论
-----------------------------------
SELECT *
FROM test
ORDER BY
            CAST(LEFT(demo, CHARINDEX('LP', demo) - 1) AS int),
...

阅读全文…

主要sql语法

[ 2005-07-28 08:41:13 | 作者: admin ]
一、资料定义 ddl(data definition language)
资料定语言是指对资料的格式和形态下定义的语言,他是每个资料库要建立时候时首先要面对的,举凡资料分哪些表格关系、表格内的有 什麽栏位主键、表格和表格之间互相参考的关系等等,都是在开始的时候所必须规划好的。

1、建表格:
create table table_name(
column1 datatype [not null] [not null primary key],
column2 datatype [not null],
...)
说明: 
datatype --是资料的格式,详见表。
nut null --可不可以允许资料有空的(尚未有资料填入)。
primary key --是本表的主键。

2、更改表格 
alter table table_name
...

阅读全文…