查询分析器不能单步调试的的原因及解决方法
具体步骤如下: 1、将服务器【身份验证】属性设置成【混合模式】(window与sql身份验证) 2、在【控制面板】中打开【服务】将【MSSQLSERVER】服务打开【属性】,选择【登录】页面,将登录身份设置成服务器本地帐号和该帐号密码,如administrator,密码123; 3、重新启动sqlserver服务,此时的服务指的是【SQL服务管理器】中的SQL SERVER服务; 假设【帐号】设置为administrator 此时达到的效果是:服务器本地帐号administrator与客户端上的administrator(并且该帐号的密码要与服务器密码相同)可以通过【查询分析器】进行调试; 如果想让
@@IDENTITY、SCOPE_IDENTITY()和IDENT_CURRENT()的辨析
相同点:它们都返回插入到IDENTITY列中的值不同点:A. @@IDENTITY不受作用域(存储过程、触发器、函数或批处理)的限制。返回最后一个插入的IDENTITY值。如果在程序中不同的作用域插入的表不同,那么返回最后一个表插入的IDENTITY值。例如:作用域A(存储过程)在表T1上插入IDENTITY列,而T1上的触发器会在T2上插入IDENTITY列。则用@@IDENTITY返回T2上插入的IDENTITY值。B. SCOPE_IDENTITY()受作用域的限制,只返回当前作用域中的最后一个IDENTITY值。上例中,如果在存储过程
MS SQL锁机制
锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: 丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 脏读A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致 不可重复读A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致 并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致
关于外联接(Outer Join)及其他
一 使用外联接以前在Oracle中用=(+)和(+)=来进行左外联接和右外联接;后来用SQL Server时用*=和=*进行外连接左外联接和右外联接;现在决定用SQL-92的标准方法:[OUTER] JOINOUTER是可以省略的。LEFT OUTER JOIN 或 LEFT JOIN 表示左外联接 RIGHT OUTER JOIN 或 RIGHT JOIN 表示左外联接 FULL OUTER JOIN 或 FULL JOIN 表示左外联接外联接的意思不用多说,我们都懂,但是JOIN到底怎么用呢?没有找到很好的资料,只能从例子中学习了:1、
汽车驾驶完全手册
起动之前先坐稳,车内仪表检查准。 油压电压都稳定,切记调准后视镜。 一拧钥匙一脚油,手脚配合要紧凑。 踩住离合挂倒档,松开手闸向后望。 出库倒车要注意,来往车辆看仔细。 轻踩油门慢离合,平稳启动不熄火。 车身出库快打轮,车尾方向要对准。 车身摆正快回轮,踩住离合刹车稳。 移库倒车要注意,宽窄程度看仔细。 位置狭窄分次移,车身两侧留余地。 拐弯倒车须留意,内侧车身看仔细。 倒车镜中测距离,注意回轮有时机。 调头倒车要安全,不让后轮出边线。 操纵打轮要熟练,
SQL Server不可以增加非空列
ALTER TABLE only allows columns to be added that can contain nulls or have a DEFAULT definition specified. ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。如果:IF EXISTS(SELECT 1 FROM SYSOBJECTS WHERE NAME = N'tab_test') AND NOT EXISTS(SELECT 1 FROM SYSOBJECTS A, SYSCOLUMNS B WHERE B.ID = A.ID AND B.NAME = N'col_test' and a.name = N'tab_test') alter table tab_test add col_test smallint NOT NULLGO将会收到错误信息。要增加非空列怎么办呢?第1种办法:在add column时指定列有defaultalter tab
通用自动为某表某字段生成拷贝名称的存储过程
当在表tab(id, name...)中生成一条新纪录,其他字段都与原纪录一致,但name字段必须按name, Copy of name, Copy (2) of name, Copy (3) of name的规律变化,用下面的SP可以轻松达到此目的。它是通用的,可以针对任何表的varchar(char)类型的字段,生成新名称。-- SP_generate_copy_object_name-- ============================================-- Procedure Name : SP_generate_copy_object_name-- Function : generate a object name that is copied-- Failure return : ''-- Success return : the new object name---- Para
外键技术
一、语法FOREIGN KEY 约束主要目的是控制存储在外键表中的数据,但它还可以控制对主键表中数据的修改。FOREIGN KEY 约束并不仅仅只可以与另一表的 PRIMARY KEY 约束相链接,它还可以定义为引用另一表的 UNIQUE 约束。FOREIGN KEY 约束不允许空值,但是,如果任何组合 FOREIGN KEY 约束的列包含空值,则将跳过 FOREIGN KEY 约束的校验。FOREIGN KEY 可以引用同一表中的其它列(自引用)。一个表最多可包含 253 个 FOREIGN KEY 约束。每个表在其 FOREIGN KEY 约束中最多可以引用 253 个不同的表。列级 FOREIGN KEY 约束放在列说明部分,表级
SQL SERVER字符集的研究
一、 试验归类测试SQL:------------------------------------------------------------drop table acreate table a(a varchar(2))insert into a values('a')insert into a values(N'a')insert into a values('深圳')insert into a values(N'深圳')select a, len(a), datalength(a) from adrop table #acreate table a(a varchar(2))insert into #a values('a')insert into #a values(N'a')insert into #a values('深圳')insert into #a values(N'深圳')select a, len(a), datalength(a) from #a-----------------------------------------
修复identity 类型字段数据的跳跃(转)
修复identity 类型字段数据的跳跃(译) 内容提要 1、引言 2、dbcc object_atts 3、下载'sp_identity' 存储过程 4、使用sp_identity显示使用identity 类型字段的表 5 使用sp_identity显示当前表的 identity 数字 6、使用sp_identity 修改表的 identity数字 1引言 在sybase 中,有一个使用未公开的dbcc 命令 ,即 dbcc object_atts 快速修复identity 跳跃的方法,因为 dbcc object_atts 比较难于使用,而存储过程 sp_identity 更容易完成你的问题 警告:本文的方法没有出现在sybase 发布的文档中,并且没有被 sybase 支持,使用与否取决定你
1.误会; 2.钉子; 3.且慢下手; 4.宽大
请照顺序读 : 1.误会; 2.钉子; 3.且慢下手; 4.宽大 1.误会 : 早年在美国阿拉斯加地方,有一对年轻人结婚,婚後生育, 他的太太因难产而死,遗下一孩子。 他忙生活,又忙於看家,因没有人帮忙看孩子,就训练一只狗, 那狗聪明听话,能照顾小孩,咬著奶瓶喂奶给孩子喝,抚养孩子。 有一天,主人出门去了,叫它照顾孩子。 他到了别的乡村,因遇大雪,当日不能回来。 第二天才赶回家,狗立即闻声出来迎接主人。他把房门开一看,到处是血, 抬头一望,床上也是血,孩子不见了,狗在身边,满口也是血, 主人发现这种情形,以为狗性发作,把孩
关于使用多表做update的语法
一、当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰。并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联!1.update t1 set t1.c2 = t2.c2from t2 where t1.c1 = t2.c12.Update t1 set t1.c2 = t2.c2from t1 inner join t2 on t1.c1 = t2.c1二、FROM 子句中指定的表的别名不能作为 SET column_name 子句中被修改字段的限定符使用。例如,下面的内容无效:UPDATE titles SET t.ytd_
SQL Server中易混淆的数据类型
SQL Server中易混淆的数据类型 (1)char、varchar、text和nchar、nvarchar、ntextchar和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。text存储可变长度的非Unicode数据,最大长度为2^31-1(2,147,483,647)个字符。后面三种数据类型和前面的相比,从名称上看只是多了个字母"n",它表示存储的是Unicode数据类型的字符。写
关于default约束
1. 如果一个field有default 值时,应加上它的constraint 名称,如:Crate table fb_user ( Id int, Name varchar(10) constraint DF_fb_user_name DEFAULT ‘aaa’ )2. 如果要删除一个有default值的字段,但以前又没有指定其constraint名称,这时应先查找这个字段上的constraint名称,然后先删除该constraint,再删除
自动检测两个数据库之间对象的存储过程
-- ============================================================-- Procedure Name : wh_check_dataobject-- Function : check the dataobjects between two database-- Failure return : 1-- Success return : 0---- Parameters :-- @database_check : the database that is checked-- @dataobject : (tb-table, sp-stored procedure, fn-function, tr-trigger, vw-view, all-all objects)-- author : royalhigh, Jan, 2005/20-- =====================
行长度不得超过 8060 字节
在SQL Server 2000中建表:CREATE TABLE man_sp_content ( sp_script varchar(8000) NOT NULL, version varchar(20) NOT NULL, sp_content_id int NOT NULL,
生成sql server2000对象创建脚本的存储过程(转)
生成sql server2000对象创建脚本的存储过程 通过读取sysobjects 等系统表的纪录,生成表、视图等数据库对象脚本的存储过程。已知问题:存储过程长度有限制,不能超过8000个字节,因为用来存储sql脚本的变量为varchar型,最大就是8000。-----------------------------------------------------------------------------------------------------------------------------if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[sp_create_check]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)drop procedure [dbo].[sp_
BLOB(二进制大对象:text、ntext或image)类型数据的操作
SQL SERVER 2000中,字符类型一般用char和varchar数据类型(短字符型),最长为8000字节,超过8000个字节的文本就要使用ntext或者text数据类型来存储; 二进制类型一般用binary、varbinary ,最长为8 KB,储超过 8 KB 的可变长度的二进制数据,如 Microsoft Word 文档、Microsoft Excel 电子表格、包含位图的图像、图形交换格式 (GIF) 文件和联合图像专家组 (JPEG) 文件,使用image 数据类型来存储。 ntext、text 和 image 数据类型在单个值中可以包含非常大的数据量,最大可达 2 GB。一、下面的函数和语句可以与 ntext、text 或 image 数据
SQL Server存储过程中raiserror的使用
一 系统预定义错误代码SQL Server 有3831个预定义错误代码,由master.dbo.sysmessages表维护。每一个错误代码都有相应的级别和描述。错误定义的级别从0到25。20以上的错误代表重大错误,通常意味着该错误会导致存储进程立刻终止,并且所有的客户连接都要重新初始化。非关键性错误只是禁止掉当前运行的程序行,并继续执行。判断错误是否发生和得到错误描述信息的方法:IF @@ERROR = 0begin SELECT @ERRORMESSAGETXT = description FROM master.dbo.sysmessages WHERE error = @@ERRORend二 raiserror语法msg_id 定制
关于SQL Server 2000的日志文件压缩
1. 把SQL Server 的故障模式置为简单模式,以节省log文件所占空间;alter database 'database_name' set recovery simple2. 在“Enterprise Manager”中用菜单操作或者用以下DBCC命令:USE 'database_name'GODBCC SHRINKFILE(select File_id('database_name_log'), 1)* 1表示1M, 'database_name_log'表示日志文件的逻辑文件名3. Backup日志,并在Backup后Truncate日志文件;---收缩日志backup log dbname with no_logdbcc shrinkdatabase('dbname',truncateonly)[@more@]