SQL Server 切换用户模式

在sql server中,数据库不能同时为单用户模式和只供 dbo 使用模式 可以通过使用 alter database 命令来切换使用: alter database DatabaseName set single_user 该命令限制用户只能逐个访问数据库 alter database DatabaseName set restricted_user 该命令限制只有 db_owner、dbcreator 或 sysadmin 角色的成员才能访问数据库 alter database DatabaseName set multi_user 该命令将数据库的访问权限返回其一般运行状态 在sql server中,数据库不能同时为单用户模式和只供 dbo 使用模式 可以通过使用 alter database 命令来切换使用: alter database […]

sqlserver2008安装报错 “Previous releases of Microsoft Visual Studio 2008″ failed.

“Previous releases of Microsoft Visual Studio 2008″ failed. 问题原因,vs2008未安装sp1 解决办法: 1.去掉下面3个安装组件 Management Tools Integration Services Business Intelligence Development Studio 2.转到安装目录,执行:

   

[转] SQL优化心得

大家都在讨论关于数据库优化方面的东东,刚好参与开发了一个数据仓库方面的项目,以下的一点东西算是数据库优化方面的学习+实战的一些心得体会了,拿出来大家共享。欢迎批评指正阿! SQL语句: 是对数据库(数据)进行操作的惟一途径; 消耗了70%~90%的数据库资源;独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低; 可以有不同的写法;易学,难精通。 SQL优化: 固定的SQL书写习惯,相同的查询尽量保持相同,存储过程的效率较高。 应该编写与其格式一致的语句,包括字母的大小写、标点符号、换行的位置等都要一致 ORACLE优化器: 在任何可能的时候都会对表达式进行评估,并且把特定的语法结构转换成等价的结构,这么做的原因是 要么结果表达式能够比源表达式具有更快的速度 要么源表达式只是结果表达式的一个等价语义结构 不同的SQL结构有时具有同样的操作(例如:= ANY (subquery) and IN (subquery)),ORACLE会把他们映射到一个单一的语义结构。

[转] 影响SQL server性能的关键三个方面

1 逻辑数据库和表的设计 数据库的逻辑设计、包括表与表之间的关系是优化关系型数据库性能的核心。一个好的逻辑数据库设计可以为 优化数据库和应用程序打下良好的基础。 标准化的数据库逻辑设计包括用多的、有相互关系的窄表来代替很多列的长数据表。下面是一些使用标准化 表的一些好处。 A:由于表窄,因此可以使排序和建立索引更为迅速 B:由于多表,所以多镞的索引成为可能 C:更窄更紧凑的索引 D:每个表中可以有少一些的索引,因此可以提高insert update delete等的速度,因为这些操作在索引 多的情况下会对系统性能产生很大的影响 E:更少的空值和更少的多余值,增加了数据库的紧凑性 由于标准化,所以会增加了在获取数据时引用表的数目和其间的连接关系的复杂性。太多的表和复杂的连接关系会降低服务器的性能,因此在这两者之间需要综合考虑。 定义具有相关关系的主键和外来键时应该注意的事项主要是:用于连接多表的主键和参考的键要有相同的数据类型。

多个字段排序的sql

sql又生疏了…

SQL的identity函数只有在select into时才可用; DB2 的自增列函数 ROW_NUMBER() OVER() ;

深入讲解数据库中User和Schema的关系

 User和Schema比较容易混淆,搞不清他们之间是什么关系,转一篇文章。 假如我们想了解数据库中的User和Schema究竟是什么关系,首先必须了解一下数据库中User和Schema到底是什么概念。        在SQL Server2000中,由于架构的原因,User和Schema总有一层隐含的关系,让我们很少意识到其实User和Schema是两种完全不同的概念,不过在SQL Server2005中这种架构被打破了,User和Schema也被分开了。 首先我来做一个比喻,什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User?我们可以可以把Database看作是一个大仓库,仓库分了很多很多的房间,Schema就是其中的房间,一个Schema代表一个房间,Table可以看作是每个Schema中的床,Table(床)就被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了J。,然后床上可以放置很多物品,就好比Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table,现实中每个仓库放置物品的基本单位就是床, User就是每个Schema的主人,(所以Schema包含的是Object,而不是User),其实User是对应与数据库的(即User是每个对应数据库的主人),既然有操作数据库(仓库)的权利,就肯定有操作数据库中每个Schema(房间)的权利,就是说每个数据库映射的User有每个Schema(房间)的钥匙,换句话说,如果他是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是他的(包括房间),他有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,呵呵,和现实也太相似了吧。我还可以给User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了,至于分配权限的问题,我留在以后单独的blog中详述。比喻到这里,相信大家都清楚了吧。

SQL条件处理–Case语句

SQL中使用CASE处理条件      在使用SQL的过程中,有时候可能会要对数据进行条件查询。比如字段A为True时查询出“男”,否则查询出“女”。这样就可以不在程序中在去判断了。在SQL中,可以利用Case语句来完成这样的查询。 一、Case介绍 CASE 计算条件列表并返回多个可能结果表达式之一。 CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE 参数。 语法 简单 CASE 函数: CASE input_expression     WHEN when_expression THEN result_expression         [ …n ]     [         ELSE else_result_expression     END CASE 搜索函数: […]

SET PARSEONLY 与SET NOEXEC (Transact-SQL)

SET PARSEONLY 检查每个 Transact-SQL 语句的语法并返回任何错误消息,但不编译和执行语句。 SET PARSEONLY { ON | OFF } 当 SET PARSEONLY 为 ON 时,SQL Server 只分析语句。当 SET PARSEONLY 为 OFF 时,SQL Server 编译并执行语句。 SET PARSEONLY 的设置是在分析时设置,而不是在执行或运行时设置。 在存储过程或触发器中不要使用 PARSEONLY。如果 OFFSETS 选项为 ON 而且没有出现错误,则 SET PARSEONLY 返回偏移量。 SET […]

从数据库随机读取数据

示例代码: SQL Server:Select Top * From  表 Order By NewID()   Access  :Select Top * From 表 Order By Rnd(ID)          *说明-Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(UserName)  Select Top 10 * From 表 Order BY Rnd(Len(UserName))   MySql:Select * From 表 Order By Rand() Limit […]

set nocount on 是什么意思?

我想請問一下: set nocount on 是什麼意思, 為什麼很多的stored procedures的第一行都有遮一句話??多謝!!! 每次我们在使用查询分析器调试SQL语句的时候,通常会看到一些信息,提醒我们当前有多少个行受到了影响,这是些什么信息?在我们调用的时候这些信息有用吗?是否可以关闭呢? 答案是这些信息在我们的客户端的应用程序中是没有用的,这些信息是存储过程中的每个语句的DONE_IN_PROC 信息。 我们可以利用SET NOCOUNT 来控制这些信息,以达到提高程序性能的目的。 MSDN中帮助如下: SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。 语法 SET NOCOUNT { ON | OFF } 注释 当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF […]