关闭

SET NOCOUNT 的怪问题

/**//*-- SET NOCOUNT 的问题SQL 版本: SQL Server 2005 3159故障描述:当满足下述条件时, SET NOCOUNT 导致 TRY ... CATCH 无法正确处理错误1. 使用 EXEC() AT  或者 EXEC ..dbo.sp_executesql 2.  中包括输出参数3.  中包括 SET NOCOUNT ON 和 USE  语句(注意不能更...
阅读(2968) 评论(0)

解决VISTA下安装VS 2005需要先安装XP SP2的问题

 最近在 Vista 下安装 Vs 2005,遇到一个暴郁闷的问题,安装过程居然提示需要先安装 XP SP2,而且提示中没有继续安装,只有退出安装程序可选。在网上没有找到解决方案,偶然搜索到可以把VS 2005 SP1集成到VS 2005安装程序中,经过摸索,终于成功制作了包含VS 2005 SP1的VS 2005安装程序,通过它成功地在VISTA中安装上VS 2005。简述如下(步骤...
阅读(6405) 评论(10)

乘车线路查询

 背景有如下表示乘车线路和站点的数据,要求查询出指定站点之间的所有乘车线路:USE tempdbGO -- 模拟数据SET NOCOUNT ONIF OBJECT_ID(Ntempdb..#tb) IS NOT NULL    DROP TABLE #tbCREATE TABLE #tb(    id int IDENTITY    ...
阅读(8706) 评论(14)

使用临时表 + 循环展 BOM

背景有如下的 BOM 表,parent_part 与 child_part 是多对多的关系,现在要求查询出每个 child_part 的最顶层的 parent_partCREATE TABLE pl_bom(    parent_part varchar(10),    child_part varchar(10))INSERT INTO pl_bomSELEC...
阅读(11154) 评论(17)

如何控制触发器递归

 背景A表UPDATE后,取B表某列再次UPDATE A表,这样又触发了A表的 UPDATE  触发器,我的目的是只触发一次,是否设置 nested triggers 选项关闭递归触发器即可?分析首先,必须清楚触发器递归的定义,触发器有两种递归方式:1.     直接递归A表上的触发器更改(插入/删除/更新)A表数据,导致A表的触发器再次触发,这种状况称之为...
阅读(9284) 评论(5)

只让指定的机器连接SQLServer服务器

背景只想使某个IP的计算机才能连接到SQL Server服务器,不允许其他客户端连接。解决方法可以直接在防火墙中做限制,只允许与指定的IP地址建立1433的通讯。当然,从更为安全的角度来考虑,应该把1433端口改成其他的端口。其他解决方法1(限从指定IP接入的客户端)如果使用SQL Server 2005,还可以通过端点限制的方法来实现,此方法要求一块专...
阅读(11265) 评论(12)

选择合适的游标类型

背景:定义游标的时候, 如果不指定STATIC 关键字的时候, 则默认定义的游标是动态(DYNAMIC) 的动态(DYNAMIC) 游标会反映在滚动游标时对结果集内的各行所做的所有数据更改。行的数据值、顺序和成员身份在每次提取时都会更改。动态游标不支持ABSOLUTE 提取选项。因为动态游标会消耗资源去检查基础表的更新, 所以对于复杂的查询, 且不需要反映基础表更新情况的游标处...
阅读(7848) 评论(4)

认识静态与动态游标

背景:静态(STATIC)游标创建将由该游标使用的数据的临时复本。对游标的所有请求都从tempdb 中的这一临时表中得到应答;因此,在对该游标进行提取操作时返回的数据中不反映对基表所做的修改,并且该游标不允许修改动态(DYNAMIC) 游标会反映在滚动游标时对结果集内的各行所做的所有数据更改。行的数据值、顺序和成员身份在每次提取时都会更改。动态游标不支持ABSOLUTE 提取选项。...
阅读(6176) 评论(5)

游标类型产生的数据检索问题

表现:将数据库兼容级别从80 改到90 后, 下面的游标循环不出数据, 但单独SELECT 有结果DECLARE MyCursor CURSOR LOCAL READ_ONLYFOR  SELECT    Col1FROM tbname WITH(NOLOCK) WHERE Name LIKE SNET%    AND B_Key IN(    ...
阅读(4033) 评论(0)

无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)

表现:下面的代码, 在兼容性级别90的所有用户数据库和tempdb库中都能执行, 但无法在系统数据库中执行, 执行会收到如下错误:Msg 4121, Level 16, State 1, Line 2Cannot find either column "dbo" or the user-defined function or aggregate "dbo.f_test", or...
阅读(5399) 评论(0)

使用TableDiff实用工具解决事务复制中的问题

  事务复制是数据同步中常用的一种手段,复制过程难免会遇到不少问题,就笔者遇到的问题而言,一般有两大类:一类是通过重新启动Distributor Agent即可解决的问题,另一类是因为Subscriber修改了数据,导致发布的数据有冲突,这类问题一般需要手工去修复。TableDiff是SQL Server 2005的一个命令行实用工具,该工具可以比较两个表,并且生成数据同步的脚本。借助这个...
阅读(7474) 评论(11)

实现删除主表数据时, 判断与之关联的外键表是否有数据引用, 有标志, 无则删除

问题描述:某个基础信息表,与系统中30多个表存在外键关系,当删除基础数据时,需要判断是否已经被用过,如果用过则更改标志位,如果没有用过则直接删除,如何能很好实现这个处理?最好能够自动适应表的变化 问题解决(SQL Server 2005)-- SQL Server 2005的错误处理容易控制, 因此, SQL Server 2005中可以直接删除, 通过错误处理...
阅读(10482) 评论(12)

在有限多的不大于100的正整数中,找出尽量多个相加起来值介于98~102之间的组合

 问题描述:在有限多的不大于100的正整数中,找出尽量多个相加起来值介于98~102之间的组合。组合的个数限制在2 和3。比如有数字(39,40,1,55,17,17……N)数字可以有重复。找出的组合有(50,50),(21,41,39),(48,50)……M。在上面的数字在组合中每次只能出现一次(比如数字中40只出现过一次,那在组合中也只能出现一次。17出现过两次那在组合...
阅读(6713) 评论(6)

SELECT 赋值与ORDER BY冲突的问题

问题描述:使用 SELECT 语句,轮询表中的数据,并且处理变量数据时,如果有ORDER BY语句,则得不到想要的结果,但去掉ORDER BY,结果正常。具体的问题表现参考下面的问题重现代码 问题重现代码-- 测试数据DECLARE @T TABLE(id int,value nvarchar(16))INSERT INTO @T SELECT ...
阅读(10107) 评论(14)

UPDATE 时, 如何避免数据定位处理被阻塞

问题描述:数据库PUBS中的authors表,想锁定CITY为aaa的记录,为什么执行下面的命令后,CITY为bbb的记录也被锁定了,无法进行UPDATE.BEGIN TRANSACTION         SELECT * FROM authors     WITH (HOLDLOCK)     WHERE city=aaa 如何才能锁定CITY为AAA的记录,而...
阅读(6584) 评论(3)

SSIS处理导入数据时, 存在的更新, 不存在的插入

问题描述:当你把数据从其他数据库, 或者是文本文件之类的其他数据源导入到目的数据库时, 有时希望在导入的处理中, 能够实现"数据存在时更新, 不存在时导入"在之前, 一般是通过导入临时表, 然后再判断处理导入正式表的, 在SQL Server 2005中, SSIS可以在导入处理时直接完成这种处理. 下面具体演示一下如何用SSIS完成这样的处理:1.        ...
阅读(22406) 评论(22)

使用事务与锁,实现一个用户取过的数据不被其他用户取到

问题描述:用ADO访问数据库,从一个表中取一定的记录(比如20行),取出后在程序中使用,使用完后删除掉记录(不用更新或删除记录)。在多用户操作下(每个用户采用相同的操作),怎么保证一个用户已选取的记录不被其他用户选取? 问题解决:处理这类问题的一般方法是增加一个标志列,每个用户取的记录设置一个标志,新的用户只从标志为未取的记录中获取记录。而本文利用事务与锁来...
阅读(9684) 评论(13)

如何快速生成100万不重复的8位编号

最近在论坛看到有人问,如何快速生成100万不重复的8位编号,对于这个问题,有几点是需要注意的:1.    如何生成8位随机数,生成的数越随机,重复的可能性当然越小2.    控制不重复3.    考虑性能针对这个问题,我写了如下的示例来解决,希望能为有这类需求的人提供指导 生成100万条8位不重复数据的示例USE tempdbGO -- 创建测试...
阅读(20665) 评论(21)

无法在 SQL Server 2005 Manger Studio 中录入中文的问题

问题表现:在 SQL Server 2005 Manger Studio中打开表,无法输入中文,只能输入英文 问题重现:1.  我们建立如下三个测试表:CREATE TABLE ta(    id int IDENTITY,    col varchar(50)) CREATE TABLE tb(    col varchar(50), ...
阅读(12133) 评论(13)

如何用T-SQL语句建立跟踪

一、       用脚本启动并设置跟踪的示例通过这个示例,你可以了解用脚本进行跟踪所涉及到的存储过程,要了解这些存储过程的具体语法和参数的含义,请查询联机帮助/****************************************************//* Created by: SQL Profiler                        ...
阅读(7145) 评论(1)
187条 共10页首页 上一页 1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:1316297次
    • 积分:15242
    • 等级:
    • 排名:第837名
    • 原创:178篇
    • 转载:9篇
    • 译文:0篇
    • 评论:881条
    最新评论