其实都在使用,突然想应该认真学一学。以下为学习笔记。

2006年1-8日

1.SQL server 2000的工具

.service manager

servicemanger包括以下服务:

。。MSSQLServer

主要是对关系数据的实现,对数据库文件进行管理

。。SQLServerAgent

自动管理和运行 任务,将出错提交管理员

。。MSDTC

用于多个服务器上的数据同步

。。SQLMail 和SQLAgentMail

接收和发布邮件

.Enterprise manager

在运行时最小化那个,可以选择服务器和服 务内容

.Query Analyzer

是一个多文档运行程序,主要执行transact_sql语句并在结果窗口中出现

.DTS--导入/导出数据

.osql.isql

主要用于提示符下的sql命令query

.Profiler

监视 数据库和服务器活动。

.客户端网络实用工具

用不同的协议和数据库通信

2.存储过程的基本操作

现开始学习MSSQL2000,这是以前的产品了,虽然一直在使用,有必要重新认识数据库技术(主要是因为asp.net设计上遇到的问题):

以下都是从开始学习后的知识点滴。

怎样将NORTHWINDN导入2005个人版,安好一个2005的客户端工具,然后将Northwind数据库拷贝到2005数据库目录,然后,打开sql server managment studio通过数据库中的attach对数据库进行添加

2006年1月4日

在使用asp.net访问sql2005时,通过向导生成了一个查询的存过程getExpertdata,在程序运行中出现如下错误:

用户aspnet不能访问,用sql server managment studio2005打开数据库,发现有aspnet用户,不过它的缺省不是登陆我所要的数据库,改了缺省值后,还是不能访问,又查了查数据库用户,居然没有aspnet用户,添加后,就能访问了解,看来, sql2005数据库是以数据库所定义用户为先,就算系统有这个用户也不能对某个数据库进行使用.

(1月11日,用asp.net访问sqlserver 2005时,出现问题的解决.

常规网络错误。请检查您的网络文档。

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 常规网络错误。请检查您的网络文档。

源错误:


行 507:行 508: //fill the DataSet using default values for DataTable names, etc.行 509: da.Fill(ds);行 510: 行 511: // detach the SqlParameters from the command object, so they can be used again.



这个问题是在将ASPNE用户的server role设置为sysadmin后出现的.结果在将桌面的客户端数据库连接进行了关闭后,程序就能访问了.虽叫咱的是桌面版,只能一个用户使用呀.是不是只能一个用户问我的程序呀,这样就太不好了.

另一问题是

EXECUTE permission denied on object 'GetExpertData', database 'EXPERT', schema 'dbo'.

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: EXECUTE permission denied on object 'GetExpertData', database 'EXPERT', schema 'dbo'.

源错误:


行 507:行 508: //fill the DataSet using default values for DataTable names, etc.行 509: da.Fill(ds);行 510: 行 511: // detach the SqlParameters from the command object, so they can be used again.



这是将aspnet用户直接设置到数据库后,没有存储过程使用权造成了.怎样修改呢,难道还是在系统中将aspnet用户改为sysadmin吗?最后还是只好这样,不清楚为啥要这样.

关于建表的问题.

由于在建表时,字段,表常常和数据库的保留字相同,要用[ ],这给sql语句带来麻烦,所以常常是以每个表和每个字段都打上[ ],例:

-- 需要生成数据库的结构SQL语句
-- 请保证每个SQL 之后有个 GO

-- 
/****** Object:  Table [dbo].[App]    Script Date: 2003-6-26 20:25:27 ******/
CREATE TABLE [dbo].[App] (
 [AppID]  [uniqueidentifier] NOT NULL ,    
 [AppName]  [nvarchar] (20) NOT NULL ,
 [Description]  [nvarchar] (127) NULL 
) ON [PRIMARY]
GO

uniqueidentifier就是unique字段具有唯一性.

如果有多个表要创建,请先将表全部创建完后,再修改各个表的主键,