MSSQL
MSSQL学习
usher_gml
这个作者很懒,什么都没留下…
展开
-
分割字符串
比如如下一个字符串: “1.我喜欢去新疆2.昨天你去北京了吗?3.温老师是位好老师” 取出来时: 1.我喜欢去新疆 2.昨天你去北京了吗? 3.温老师是位好老师 SQL代码如何实现?--创建一个 ©î分函数 Create function fun_s (@s varchar(100)) returns @t table(s varc原创 2009-09-03 14:27:00 · 364 阅读 · 1 评论 -
镜像和快照
1.目的:提供HA,提供热启动,与Failover Clustering不同的是,不需要SAN,只需要同一网络的两个SQL Server实例。2.镜像工作于数据库层面,对系统数据库不能够实现镜像。3.在数据库实例上必须启用Trace Flag 1400才能支持镜像。4.HA技术包括:Failureover Clustering,Log shipping,Replication.镜像与备份的区别原创 2009-08-03 10:38:00 · 2209 阅读 · 0 评论 -
触发器
1.除了DML Trigger外,SQL Server 2005新增加了DDL Trigger2.在使用Trigger时,要综合考虑性能3.Trigger不能代替Constraint4.能用存储过程,就尽量不要用触发器5.非Log的操作不支持触发器6.DML触发器分为:after trigger(用于表),instead of trigger(用于表和视图)7.在DML触发器定义中,可声明触发器是原创 2009-08-03 10:41:00 · 438 阅读 · 0 评论 -
sql server 2005系统视图sys.sysobjects和sys.all_objects,sys.objects,三者之间有什么区别
这三个视图都是存在于SQL Server的每个数据库中。 在SQL Server 2000中,它们都是系统表,而不是视图。 关于两个版本中系统表和系统的视图的对应关系,参考:http://technet.microsoft.com/zh-cn/library/ms187997.aspx sys.all_objects:显示所有架构范围内的用户定义对象和系统对象 ,参考 http://t转载 2009-07-31 17:31:00 · 3524 阅读 · 1 评论 -
为具体的用户设置具体的访问权限
use 你的库名go--新增用户exec sp_addlogin test --添加登录exec sp_grantdbaccess Ntest --使其成为当前数据库的合法用户exec sp_addrolemember Ndb_owner, Ntest --授予对自己数据库的所有权限--这样创建的用户就只能转载 2009-07-07 11:01:00 · 566 阅读 · 0 评论 -
Principals,Securables and Permissions
1.在SQL Server的安全体系中,整个架构分为三类:Principals, Securables, Permissions.2.Principals:分为三类,Windows Scope,SQL Server Principals, Database Principals.3.使用create login命令创建Windows Scope登录,其中可以为特定的用户指定默认数据库和默认语言等.转载 2009-08-03 10:40:00 · 665 阅读 · 0 评论 -
按某一字段分组取最大(小)值所在行的数据
--按某一字段分组取最大(小)值所在行的数据--(爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23于浙江杭州)/*数据如下:name val memoa 2 a2(a的第二个值)a 1 a1--a的第一个值a 3 a3:a的第三个值b 1 b1--b的第一个值b 3 b3:b的第三个值b 2 b2b2b2b2b转载 2009-04-17 09:53:00 · 469 阅读 · 0 评论 -
统计
create table tb([DB-ID] varchar(10),ENTITY varchar(10),DATE varchar(10),[CUST-NO] int,AMOUNT decimal(10,2),TAX decimal(10,2))insert tb select RCHQ,001,2004-11-10,200000,100.00,17.00union all转载 2009-09-03 14:36:00 · 1223 阅读 · 0 评论 -
小写金额转换成大写
作者:(birdie_7761@cmmail.com)版本:1.0创建时间:20020227修改时间:功能:小写金额转换成大写参数:n_LowerMoney 小写金额v_TransType 种类 -- 1: directly translate, 0: read it in words 输出:大写金额*************************************************转载 2009-06-22 12:16:00 · 498 阅读 · 0 评论 -
BOM
CTE_BOM: declare @tb table(FieldID int,ParentID int) insert @tb select 1, 0 union allselect 3, 0 union allselect 4, 0 union allselect 5, 4 union原创 2009-09-03 14:14:00 · 470 阅读 · 0 评论 -
Calendar--显示某个月
第一种方法:create function f_calendar(@year int,@month int)returns @t table(日 varchar(4),一 varchar(4),二 varchar(4),三 varchar(4),四 varchar(4),五 varchar(4),六 varchar(4))asbegin declare @a table(id int iden转载 2009-10-13 16:33:00 · 659 阅读 · 0 评论 -
普通行列转换
/*问题:假设有张学生成绩表(tb)如下:姓名 课程 分数张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94想变成(得到如下结果): 姓名 语文 数学 物理 ---- ---- ---- ----李四 74 84 94张三 74 83 93-------------------*/create table tb(姓名 varchar(1转载 2009-08-21 16:22:00 · 425 阅读 · 0 评论 -
一对多改成一对一
两个表: 表1中的authorid对应多个paperid,表2的authorid是唯一的,现在的问题是:把表1中的authorid对应的多个paperid分解成一个authorid对应一个paperid,同时更新表2中的authorid.举例子: 表1 表2 10000 218 218 10001 218转载 2009-09-03 14:32:00 · 868 阅读 · 0 评论 -
处理表重复记录(查询和删除)
--处理表重复记录(查询和删除)/******************************************************************************************************************************************************1、Num、Name相同的重复值记录,没有大小关系只保留一条2、转载 2009-04-16 09:25:00 · 363 阅读 · 0 评论 -
任意两个时间之间的星期几的次数-横
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[f_weekdaycount]) and xtype in (NFN, NIF, NTF))drop function [dbo].[f_weekdaycount]GO/*--计算任意两个时间之间的星期几的次数(横向显示) 本方法直接判断转载 2009-04-15 11:51:00 · 407 阅读 · 0 评论 -
分拆合并列值
分拆列值 --******************************************************************************************-- 分拆列值 --***********************************************************转载 2009-04-27 10:27:00 · 607 阅读 · 0 评论 -
取n到m行
1. select top m * from tablename where id not in (select top n id from tablename order by id asc/*|desc*/) 2. select top m * into 临时表(或表变量) from tablename order by columnname -- 将top m笔插入到临时表 set rowc转载 2009-06-22 10:07:00 · 509 阅读 · 0 评论 -
制作Calender--任意两个时间内的日历
CREATE TABLE [dbo].[Calendar]( [Num] [int] IDENTITY(1,1) NOT NULL, [Sunday] [varchar](20) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL, [Monday] [varchar](20) COLLATE Chinese_Taiwan_Stroke_CI_AS NULL, [T原创 2009-10-13 15:21:00 · 589 阅读 · 0 评论 -
SQL数据类型详细描述
自动编号:设字段类型为:int ,然后列属性中 (是标识)选是,标识种子选1。 用varchar(max)代替text。varchar的最大长度为8000,但是varchar(max)则可以存储多达2G的数据,因此其作用相当于SQL 2000中的text。但是微软可能会后续的SQL Server版本中移除text类型,从现在就应该用varchar(max) 来代替text。 用nvarchar(转载 2009-09-04 09:40:00 · 840 阅读 · 0 评论 -
T-SQL Recipes------Transaction, Locking, Blocking, Deadlocking
1. 事务控制 SQL Server 2005支持3种类型的事务:Autocommit, Explicit,Implicit事务。 Autocommit是SQL Server 2005事务的默认行为。每个T-SQL执行完成后都默认提交。特点是没有恢复选项。 Implicit是隐式事务,当"Alter table, Select, Update,Insert,Open,Del转载 2009-08-03 10:47:00 · 480 阅读 · 0 评论 -
SQL SERVER中collate的含义
我们在create table时经常会碰到这样的语句,例如:password nvarchar(10)collate chinese_prc_ci_as null,那它到底是什么意思呢?不妨看看下面:首先,collate是一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则投影。语法是collate collation_namecollation_na转载 2009-07-17 17:18:00 · 901 阅读 · 0 评论 -
char varchar nvarchar
char 和 varchar固定长度 (char) 或可变长度 (varchar) 字符数据类型。char[(n)]长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。varchar[(n)]长度为 n 个字节的可变长度且非 Unic转载 2009-08-28 11:50:00 · 1299 阅读 · 0 评论 -
T-SQL Recipes------Select
1. NOT操作符 SELECT Title, FirstName,LastName FROM Person.Contact WHERE NOT Title = Ms.2. 保证WHERE字句的非二义性 当存在多个操作符,如NOT,AND,OR的时候,实用括号分开各个逻辑条件。3. Order By 默认是升序,默认情况下,采用聚簇索引的物转载 2009-08-03 10:52:00 · 494 阅读 · 0 评论 -
T-SQL Recipes------Insert, Update, Delete语句
1. 使用默认值插入记录 INSERT Production.Location(Name, CostRate, Availability, ModifiedDate) VALUES (Wheel Storage 3, 11.25, 80.00, DEFAULT)2. IDENTITY属性类型Column的显式插入 SET IDENTITY_INSERT Hum原创 2009-08-03 10:49:00 · 692 阅读 · 0 评论 -
T-SQL Recipes------Table, Index, View, Function
1. Table数据类型 char, nchar, ntext, nvarchar,text,varchar等字符类型,有定长和非定长的区别,有最大长度的区别。一个表最多支持1024列,每行的总字节不能超过8060字节。每个数据页是8k。但是SQL Server通过"Over-Flow"的机制支持超越8060的约束。2. 计算列 计算列的取值来源于其他列值的计算。可以通过PE转载 2009-08-03 10:46:00 · 667 阅读 · 0 评论 -
设置Microsoft SQL server 2005的兼容性选项
在某些细节上,SQL server 2005与2000是不兼容的,例如:select * from table1 order by NULL 在2000上可以顺利运行,但在2005上就不可以。通过设置2005的兼容性选项可以回避数据库迁移时可能发生的问题,特别是在测试不足的情况下。运行以下的语句设置SQL 2005的兼容等级为SQL 2000兼容:run sp_dbcmp转载 2009-07-17 15:37:00 · 2613 阅读 · 0 评论 -
动态管理视图(DMV)与动态管理函数(DMF)
DMV与DMF是SQL Server 2005的新增功能。它使DBA方便在数据库服务器和数据库实例层面监测系统的运行状况,而不是向以往那样通过系统表来完成这些监测功能。 DMV与DMF提供的信息非常丰富,但是细节并不容易理解。它们提供的功能分为两类:服务器层面与数据库层面。所有的DMV与DMF都存在于master数据中,属于sys schema。它们的命名规范如: sys.dm_转载 2009-08-03 11:17:00 · 863 阅读 · 0 评论 -
ALTER DATABASE ...
数据库属性ALTER DATABASE DATABASE_NAME SET ANSI_NULL_DEFAULT ON|OFF --ANSI NULL默认值GOALTER DATABASE DATABASE_NAME SET ANSI_NULLS ON|OFF --ANSI NULLS已启用GOALTER DATABASE DATABASE_NAME SET ANSI_PADDING ON|OFF原创 2009-07-17 15:20:00 · 7097 阅读 · 0 评论 -
不同服务器数据库之间的数据操作
不同服务器数据库之间的数据操作--创建链接服务器 exec sp_addlinkedserver ITSV , , SQLOLEDB , 远程服务器名或ip地址 exec sp_addlinkedsrvlogin ITSV , false ,null, 用户名 , 密码 --查询示例 select * from ITSV.数据库名转载 2009-09-21 17:16:00 · 462 阅读 · 0 评论 -
压缩日志及数据库文件大小
--压缩日志及数据库文件大小 /*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤 否则可能损坏你的数据库. --*/ 1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG转载 2009-07-03 15:36:00 · 398 阅读 · 0 评论 -
SQL Server 2005中几个有用的系统存储过程,系统表,系统函数
1.EXEC sp_helpindex tableName属性:index_archive_file_name index_description index_keys2. DB_ID(DBName)3. OBJECT_ID(tableName)4.Select * from sysindexesid (表ID), indid 索引 ID(1 =转载 2009-08-03 11:20:00 · 464 阅读 · 0 评论 -
文件组primary已满未能为数据库X对象X分配空间
数据库空间不足造成插入数据库时提示“因为文件组primary已满,未能为数据库XX对象XX分配空间”解决方法:1.检查你的磁盘剩余空间是否足够,如果没有磁盘剩余空间,则清理磁盘,腾出空间2.检查你的磁盘分区格式如果是FAT16,则数据文件最大只能是2G如果是FAT32,则数据文件最大只能是4G改为NTFS分区则没有这种限制3.检查一下你有没有限制数据库文件的大小企业管理器--右键你的数据转载 2009-07-07 10:56:00 · 1065 阅读 · 0 评论 -
sql2005如何修改排序规则
我的操作系统是英文版的,安装过中文语言包 还原的数据库是英文的,默认的排序规则是SQL_Latin1_General_CP1_CL_AS 用sql语句更新条目后 只要是中文的都显示???? 我认为是数据库排序规则的原因 但是sql2005中我改排序规则的时候显示“无法使用排它锁锁定该数据库” 请问怎么更改排序规则呢 1.sp_helpsort SELECT SERVERPROPERTY转载 2009-09-11 16:32:00 · 2114 阅读 · 0 评论 -
SQL Server 2005架构中的一些基本概念模型
操作文件(Operational FIles):用于使软件和服务运行的文件。数据文件(Data Files):系统产生的文件。数据文件分为两种:mdf后缀的数据库数据文件,ldf后缀的日志数据库文件。这两种文件的分离确保了数据库数据的安全性。文件组:数据文件的逻辑集合,便于备份和数据恢复。master系统数据库:包含操作文件,如安全,其他数据库和对象的配置。直接操作其中的表是不合原创 2009-08-03 11:40:00 · 527 阅读 · 0 评论 -
SQL Server连接中的三个最常见错误
一."SQL Server 不存在或访问被拒绝" 这个是最复杂的,错误发生的原因比较多,需要检查的方面也比较多. 一般说来,有以下几种可能性: 1,SQL Server名称或IP地址拼写有误 2,服务器端网络配置有误 3,客户端网络配置有误 要解决这个问题,我们一般要遵循以下的步骤来一步步找出导致错误的原因. ============= 首先,检查网络物理连接 ============= pin转载 2009-07-07 11:43:00 · 468 阅读 · 0 评论 -
sql server卸载重装出错
SQL卸载出后重新安装出现问题:SQL Server 2005安装程序显示注册表项计数器出错在 SQL Server 安装开始前,Microsoft SQL Server 安装程序中的安装配置检查器 (SCC) 会验证计数器注册表项的值。如果 SCC 无法验证现有的注册表项,或 SCC 无法运行 lodctr.exe 系统程序,则 SCC 检查会失败,致使安装受阻。转载 2009-09-03 15:05:00 · 1132 阅读 · 0 评论 -
SQL Server 2000 服务器安装剖析
/*标题:SQL Server 2000 服务器安装剖析作者:爱新觉罗.毓华 时间:2008-05-05地点:广东深圳*/一、情况说明 sql server 2000以前的版本,例如7.0一般不存在多个版本,只有标准版跟桌面版,用户如果不清楚该装什么版本的话,可按安装上的安装先决条件指示安装,一般在WIN2000 服务器版上装标准版,其他的系统装桌面版的就可以;而SQL Server 200转载 2009-06-23 13:47:00 · 463 阅读 · 0 评论 -
不同服务器数据库之间的数据操作
不同服务器数据库之间的数据操作 --创建链接服务器 exec sp_addlinkedserver ITSV , , SQLOLEDB , 远程服务器名或ip地址 exec sp_addlinkedsrvlogin ITSV , false ,null, 用户名 , 密码 --查询示例 select * from ITSV.数据库名.dbo.表名 --导转载 2009-06-30 11:52:00 · 379 阅读 · 0 评论 -
如何写出性能优良的SQL
如何写出性能优良的SQL (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为转载 2009-09-09 09:25:00 · 392 阅读 · 0 评论 -
SQL Server 2005性能排错白皮书(Part 2)---From MS Customer Support Service部门
TempdbTempdb用于全局存储内部或用户对象,临时表,对象和在SQL Server操作是创建的存储过程。每鯯QL Server 实例只有1个单一的tempdb。它可能是一个性能和磁盘空间的瓶颈。有限可用空间和过多的DDL/DML会使Tempdb超过负载。这能导致运行在同一个服务器中的其他无关应用变得运行缓慢或失败。下面列出一些tempdb的常规问题:◆Tempdb磁盘空间不转载 2009-08-03 11:07:00 · 1652 阅读 · 0 评论