一、 SQL DMO 描述:SQL Distributed Management Objects(SQL分布式管理对象),存在于SQLDMO.dll文件中,实际上是一个COM 对象,通过调用SQL DMO的ListAvailableSQLServers方法取得。 列表类型:列举装有“客户端”和“服务端”的计算机。 适用条件:装有 SQL Server,且有SQLDMO.dll文件。 速度:中 调用示例:GetSQLServerList(ListBox1.items); 代码: uses ComObj; function GetSQLServerList(var AList: TStrings): Boolean; var SQLServerApp: Variant; ServerList: Variant; i: Integer; begin Result := True; try SQLServerApp := CreateOleObject('SQLDMO.Application'); ServerList := SQLServerApp.ListAvailableSQLServers; for i := 1 to ServerList.Count do AList.Add(ServerList.Item(i)); SQLServerApp := Unassigned; ServerList := Unassigned; except Result := False; end; end; 二、 NetServerEnum 描述:网络服务函数,存在于NetApi32.dll文件中;通过NetServerEnum函数可取得装有SQL Server服务端的计算机列表,只装有SQL Server客户端的计算机将不会被列举其中;如果一台计算机的SQL Server服务刚刚启动,那么此函数 ......
在20世纪70年代初期,IBM研究员E. F. Codd博士开创性地研究开发了关系数据模型产品SEQUEL,即结构化英语查询语言(Structured English Query Language)。SEQUEL最终变成了SQL,或结构化查询语言(Structured Query Language,SQL)。
IBM及其他关系数据库的开发厂商都希望有一套能访问并操纵关系数据库的标准化方法。虽然IBM首创了关系数据库理论,但Oracle是第一家在市场上推出该技术的公司。随着时间的流逝,SQL在市场上得到了不错的反响,这引起了美国国家标准局(American National Standards Institute,ANSI)的关注,并分别在1986年、1989年、1992年、2003年及2006年发布了SQL标准。本文适用于ANSI 2003标准,因为ANSI 2006标准处理SQL元素已超出了本书的命令范围。(实质上,SQL2006标准描述了在SQL中如何使用XML。)
自1986年以来,已有多种可使程序员及开发者访问并操纵关系数据的语言。但是,很少有像SQL这么好学或被广泛地获得认同的一门语言。SQL让程序员及管理者只须学习单一语言,稍微作点调整,便可以把它广泛应用到多种数据库平台、应用程序及产品中。
《SQL技术手册(第三版)》讲述了五种SQL2003(SQL3)的常见实现:
1.1 关系 ......
1.监控当前数据库谁在运行什么SQL语句
SELECT osuser, username, sql_text from v$session a, v$sqltext b
where a.sql_address =b.address order by address, piece;
2.分析表
analyze table tablename compute statistics for all indexes;
analyze table tablename compute statistics for all indexed columns;
analyze table tablename compute statistics for table;
3.监控事例的等待
select event,sum(decode(wait_Time,0,0,1)) "Prev",
sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot"
from v$session_Wait
group by event order by 4;
4.查看碎片程度高的表
SELECT segment_name table_name , COUNT(*) extents
from dba_segments WHERE owner NOT IN (SYS, SYSTEM) GROUP BY segment_name
HAVING COUNT(*) = (SELECT MAX( COUNT(*) from dba_segments GROUP BY segment_name);
5.表、索引的存储情况检查
select segment_name,sum(bytes),count(*) ext_quan from dba_extents where
tablespace_name=&tablespace_name and segment_type=TABLE group by tablespace_name,segment_name;
select segment_name,count(*) from dba_e ......
安装的组件和版本的信息
Microsoft SQL Server Management Studio 9.00.1399.00
Microsoft Analysis Services 客户端工具 2005.090.1399.00
Microsoft 数据访问组件 (MDAC) 6.1.7600.16385 (win7_rtm.090713-1255)
Microsoft MSXML 3.0 5.0 6.0
Microsoft Internet Explorer 8.0.7600.16385
Microsoft .NET Framework 2.0.50727.4927
操作系统 6.1.7600
遇到的问题
无法用使用sql server 身份验证登陆
解决方法
二SQL2005企业管理器登录时选用windows身份验证一切顺利,然而使用sql server身份验证即sa用户名登录时,却出现以下错误提示“provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程”。
解决方法
以windows身份先登录进管理器,然后在服务器属性中有一项服务器身份验证,设为sql server和windows身份验证模式。下一步,在安全--登录中设置sa用户的属性,在状态 ......
/*
use master
go
if DB_ID('UserImage') is not null
drop database UserImage
create database UserImage
go
use UserImage
go
create table Images
(
Image_Name nvarchar(255) primary key,
Image_Data Image not null
)
go
create proc InsertImage
(
@Image_Name nvarchar(255),
@Image_Data Image
)
as
insert into Images values(@Image_Name, @Image_Data)
go
create proc DeleteImage
(
@Image_Name nvarchar(255)
)
as
delete from Images where Image_Name = @Image_Name
go
create proc SelectImage
(
@Image_Name nvarchar(255)
)
as
select Image_Data from Images where Image_Name = @Image_Name
go
*/
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.IO;
using System.Windows.Forms;
namespace ImageDB
{
public partial class FormImageSQL : Form
{
#region
p ......
SQL语句优化:
(1)可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
(2)SELECT子句中避免使用 ‘ * ‘
(3)减少访问数据库的次数
方法3 (高效)?
SELECT A.EMP_NAME , A.SALARY , A.GRADE,
B.EMP_NAME , B.SALARY , B.GRADE
from EMP A,EMP B
WHERE A.EMP_NO = 342
AND B.EMP_NO = 291;
(4)使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.
(5)用Where子句替换HAVING子句
(6)减少对表的查询
(7)当在SQL语句中连接多个表时, 请使用表的别名
(8)用EXISTS替代IN,用NOT EXISTS替代NOT IN
(9)避免在索引列上使用计算
(10)用>=替代>
(11)避免在索引列上使用IS NULL和IS NOT NULL;总是使用索引的第一个列 ......