Ms SQL Server
文章平均质量分 67
emailqjc
这个作者很懒,什么都没留下…
展开
-
使用ADO.NET2.0提升数据交互性能 使用SqlBulkCopy批量写入数据库
四:使用SqlBulkCopy批量装载数据(仅限SqlClient) 以往访问 SQL Server 2000 时,若有大量的数据记录需要添加到数据库内,例如从主机系统或是 NCR Teradata、Oracle等数据库系统下载大量数据记录,我们想要将它们快速添加到 SQL Server 2000中,可以有的选择是调用 T-SQL 的 Bulk Insert 语法、通过Linked Serve原创 2009-07-27 18:30:00 · 1250 阅读 · 0 评论 -
SQL与XML交互
1、SQLSERVER导入XML String sConnection = "Data Source=127.0.0.1;Initial Catalog=testdb;User ID=sa;PassWord=newman2007"; SqlConnection mySqlConnection = new SqlConnection(sConnection);原创 2009-07-24 18:35:00 · 391 阅读 · 0 评论 -
化解字符串不能超过8000的方法
/*--化解字符串不能超过8000的方法 经常有人提到,用动态生成SQL语句的方法处理数据时,处理语句超长,无法处理的问题 下面就讨论这个问题:--邹建 2003.9(引用请保留此信息)--*//*-- 测试环境--以系统表 syscolumns 为测试数据,要求按xtype为列字段,name为行字段,统计colid的和--要求结果xtype filedname_1 fie原创 2009-07-29 17:14:00 · 703 阅读 · 0 评论 -
同期及上期数据对比显示
--雇员数据CREATE TABLE Employee(ID int, --雇员编号(主键)Name nvarchar(10), --雇员名称Dept nvarchar(10)) --所属部门INSERT Employee SELECT 1,N张三,N大客户部UNION ALL SELECT 2,N李四,N大客户部UNION ALL原创 2009-07-29 17:20:00 · 3509 阅读 · 0 评论 -
使用UNION做进销存报表
--期初数据DECLARE @stock TABLE(id int,num decimal(10,2))INSERT @stock SELECT 1,100 UNION ALL SELECT 3,500UNION ALL SELECT 4,800--入库数据DECLARE @in TABLE(id int,num decimal(10,2))INSERT @in SELECT 1,原创 2009-07-29 17:23:00 · 618 阅读 · 0 评论 -
-比较第一与第二个字符串,是否有连续的5个字符相同,如果有
--比较第一与第二个字符串,是否有连续的5个字符相同,如果有,返回1,否则返回0if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[f_compstr]) and xtype in (NFN, NIF, NTF))drop function [dbo].[f_compstr]GOif exists原创 2009-07-29 17:29:00 · 730 阅读 · 0 评论 -
查询 2003-12-05 至 2004-02-28 生日的记录
--测试数据DECLARE @t TABLE(ID int,Name varchar(10),Birthday datetime)INSERT @t SELECT 1,aa,1999-01-01UNION ALL SELECT 2,bb,1996-02-29UNION ALL SELECT 3,bb,1934-03-01UNION ALL SELECT 4,bb,19原创 2009-07-29 17:35:00 · 501 阅读 · 0 评论 -
计算两个日期相差的工作天数
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[f_WorkDay]) and xtype in (NFN, NIF, NTF))drop function [dbo].[f_WorkDay]GO--计算两个日期相差的工作天数CREATE FUNCTION f_WorkDay(@dt_begi原创 2009-07-29 17:35:00 · 555 阅读 · 0 评论 -
日期推算
DECLARE @dt datetimeSET @dt=GETDATE()DECLARE @number intSET @number=3--1.指定日期该年的第一天或最后一天--A. 年的第一天SELECT CONVERT(char(5),@dt,120)+1-1--B. 年的最后一天SELECT CONVERT(char(5),@dt,120)+12-31--2.指定日期所在季度的第一原创 2009-07-29 17:37:00 · 510 阅读 · 0 评论 -
开票统计涉及到连号处理
/* 开票统计--涉及到连号处理*/create table #tb(th int,time datetime,userintime datetime,outtime datetime ,userid varchar(4),ph int)insert into #tb select 2,2002-8-24 8:15:07,8:15:07,null,4002,Null原创 2009-07-29 17:39:00 · 774 阅读 · 0 评论 -
巧用SQL实现连续编号
select id=a.id+b.id+c.id+d.idfrom( select id=0 union all select 1 union all select id=2 union all select 3 union all select id=4 union all select 5 union all select id=6 union all select 7原创 2009-07-29 17:41:00 · 726 阅读 · 0 评论 -
触发器自动维护已用
--根据 table2 表中的记录变化情况,自动修改 table1 表的内容--示例--示例数据create table table1(序号 int,类别 varchar(10),起始号 char(7),终止号 char(7),总数 int,已用票号 varchar(8000),已用票数 int,结余票数 int,结余票号 varchar(8000),组合编号 varchar(20))insert原创 2009-07-29 17:43:00 · 488 阅读 · 0 评论 -
已用编号分布查询
--测试数据CREATE TABLE tb(col1 varchar(10),col2 int)INSERT tb SELECT a,2UNION ALL SELECT a,3UNION ALL SELECT a,6UNION ALL SELECT a,7UNION ALL SELECT a,8UNION ALL SELECT b,3UNION ALL SELECT b原创 2009-07-29 17:48:00 · 361 阅读 · 0 评论 -
排名次
--示例数据CREATE TABLE tb(Name varchar(10),Score decimal(10,2))INSERT tb SELECT aa,99UNION ALL SELECT bb,56UNION ALL SELECT cc,56UNION ALL SELECT dd,77UNION ALL SELECT ee,78UNION ALL SELECT ff转载 2009-07-29 17:50:00 · 498 阅读 · 1 评论 -
topn实现通用分页存储过程
CREATE PROC sp_PageView@tbname sysname, --要分页显示的表名@FieldKey nvarchar(1000), --用于定位记录的主键(惟一键)字段,可以是逗号分隔的多个字段@PageCurrent int=1, --要显示的页码@PageSize int=10,原创 2009-07-29 18:04:00 · 360 阅读 · 0 评论 -
最短乘车线路查询
CREATE TABLE T_Line(ID nvarchar(10), --公交线路号Station nvarchar(10), --站点名称Orders int) --行车方向(通过它反应每个站的上一个、下一个站)INSERT T_Line SELECT N8路 ,N站A,1 UNION ALLSELECT N8路 ,N站B,2 UNIO原创 2009-07-29 18:05:00 · 957 阅读 · 0 评论 -
复制指定节点及其子节点到指定终止节点排序法
CREATE TABLE tb(ID int,PID int,Name nvarchar(10))INSERT tb SELECT 1,NULL,山东省UNION ALL SELECT 2,1 ,烟台市UNION ALL SELECT 4,2 ,招远市UNION ALL SELECT 3,1 ,青岛市UNION ALL SELECT 5,NULL,四会市UNION原创 2009-07-29 18:06:00 · 617 阅读 · 0 评论 -
树形数据分析
--测试数据 DECLARE @a TABLE(No varchar(10),Name varchar(10)) INSERT @a SELECT 101 ,现金 UNION ALL SELECT 102 ,银行存款 UNION ALL SELECT 10201,工行 UNION ALL SELECT 10202,建行 UNION ALL SELECT 10203原创 2009-07-29 18:11:00 · 448 阅读 · 0 评论 -
随机出题
--题库表结构CREATE TABLE tb(ID int PRIMARY KEY, --题目IDType int, --题型col1 varchar(10)) --其他需要的字段INSERT tb SELECT 1,1,试题1UNION ALL SELECT 2,1,试题2UNION ALL SELECT 3,3,试题3UNION ALL SELECT 4,3原创 2009-07-29 17:25:00 · 753 阅读 · 0 评论 -
声成查询的模糊匹配字符串
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[f_Sql]) and xtype in (NFN, NIF, NTF))drop function [dbo].[f_Sql]GOif exists (select * from dbo.sysobjects where id = object原创 2009-07-29 17:30:00 · 368 阅读 · 0 评论 -
生成指定年份的工作日/休息日列表
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[f_getdate]) and xtype in (NFN, NIF, NTF))drop function [dbo].[f_getdate]GO/*--生成日期列表 生成指定年份的工作日/休息日列表--邹建 2003.12(引用原创 2009-07-29 17:33:00 · 592 阅读 · 0 评论 -
计算两个日期之间的工作时间
if exists (select * from dbo.sysobjects where id = object_id(N[tb_worktime]) and OBJECTPROPERTY(id, NIsUserTable) = 1)drop table [tb_worktime]GO--定义工作时间表CREATE TABLE tb_worktime( ID int i原创 2009-07-29 17:36:00 · 655 阅读 · 0 评论 -
日期格式化
DECLARE @dt datetimeSET @dt=GETDATE()--1.短日期格式:yyyy-m-dSELECT REPLACE(CONVERT(varchar(10),@dt,120),N-0,-)--2.长日期格式:yyyy年mm月dd日 --A. 方法1 SELECT STUFF(STUFF(CONVERT(char(8),@dt,112),5,0,N年),8,0,N原创 2009-07-29 17:38:00 · 413 阅读 · 0 评论 -
字符串IP地址转换成IP数值函数
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[f_IP2Int]) and xtype in (NFN, NIF, NTF))drop function [dbo].[f_IP2Int]GO--1. 字符串IP地址转换成IP数值函数。CREATE FUNCTION dbo.f_IP2Int(原创 2009-07-29 17:38:00 · 1694 阅读 · 0 评论 -
处理死锁
use master --必须在master数据库中创建goif exists (select * from dbo.sysobjects where id = object_id(N[dbo].[p_lockinfo]) and OBJECTPROPERTY(id, NIsProcedure) = 1)drop procedure [dbo].[p_lockinfo]GO/*--原创 2009-07-29 18:19:00 · 328 阅读 · 0 评论 -
对于日期指定部分的加减 使用DATEADD函数就可以轻松实现
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[f_DateADD]) and xtype in (NFN, NIF, NTF)) drop function [dbo].[f_DateADD]GO/*--特殊日期加减函数 对于日期指定部分的加减,使用DATEADD函数就可以轻松实原创 2009-07-29 17:32:00 · 764 阅读 · 0 评论 -
分段更新
if exists (select * from dbo.sysobjects where id = object_id(N[dbo].[f_SetStr]) and xtype in (NFN, NIF, NTF))drop function [dbo].[f_SetStr]GO--分段截取函数CREATE FUNCTION dbo.f_SetStr(@s varchar(800原创 2009-07-29 17:39:00 · 456 阅读 · 0 评论 -
自已做标识列的例子 不自动重排编号 而是自动补号
--自已做标识列的例子,不自动重排编号,而是自动补号:--创建得到最大id的函数create function f_getid()returns char(3)asbegindeclare @id intif not exists(select 1 from tb where id=001) set @id=1elsebegin select @id=max(id) from tb原创 2009-07-29 17:47:00 · 486 阅读 · 0 评论 -
树形数据层次展示
--测试数据DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))INSERT @t SELECT 001,NULL ,山东省UNION ALL SELECT 002,001,烟台市UNION ALL SELECT 004,002,招远市UNION ALL SELECT 003,001,青岛市原创 2009-07-29 18:08:00 · 630 阅读 · 0 评论 -
树形数据编号重排
--测试数据DECLARE @t TABLE(No varchar(10))INSERT @t SELECT 1UNION ALL SELECT 3UNION ALL SELECT 302UNION ALL SELECT 305UNION ALL SELECT 305001UNION ALL SELECT 305005UNION ALL SELECT 6UNION AL原创 2009-07-29 18:11:00 · 460 阅读 · 0 评论 -
数据库设计14个技巧
1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表转载 2009-08-05 15:19:00 · 459 阅读 · 0 评论 -
SQL数据库优化经验
一、人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高!下面我将从这三转载 2009-08-05 11:34:00 · 6837 阅读 · 0 评论 -
数据库的设计与开发技巧---设计篇
随着计算机技术越来越广泛地应用于国民经济的各个领域,在计算机硬件不断微型化的同时,应用系统向着复杂化、大型化的方向发展。数据库是整个系统的核心,它的设计直接关系系统执行的效率和系统的稳定性。因此在软件系统开发中,数据库设计应遵循必要的数据库范式理论,以减少冗余、保证数据的完整性与正确性。只有在合适的数据库产品上设计出合理的数据库模型,才能降低整个系统的编程和维护难度,提高系统的实际运行效率。虽然对原创 2009-08-05 14:58:00 · 820 阅读 · 0 评论 -
数据库优化----如何让你的SQL运行得更快
人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高!下面我将从这三个方面分转载 2009-08-05 15:29:00 · 753 阅读 · 0 评论 -
数据库优化----存储过程编写经验和优化措施
1、开发人员如果用到其他库的Table或View,务必在当前库中建立View来实现跨库操作,最好不要直接使用“databse.dbo.table_name”,因为sp_depends不能显示出该SP所使用的跨库table或view,不方便校验。2、开发人员在提交SP前,必须已经使用set showplan on分析过查询计划,做过自身的查询优化检查。3、高程序运行效率,优化应用程序,原创 2009-08-05 15:38:00 · 470 阅读 · 0 评论 -
通过设置多个文件及文件组改善I/O性能
文件和文件组 Microsoft® SQL Server™ 2000 使用一组操作系统文件映射数据库。数据库中的所有数据和对象(如表、存储过程、触发器和视图)都存储在下列操作系统文件中: 主要 该文件包含数据库的启动信息,并用于存储数据。每个数据库都有一个主要数据文件。 次要 这些文件含有不能置原创 2009-08-05 16:23:00 · 734 阅读 · 0 评论 -
对一个数据库分成多个数据库文件,并且进行分组
这二天我碰到一个用BBSGOOD的用户,他的SQL数据库达到了14G,帖子量400多万,用户量等其它数据也都达到上百万,这个时候恐怕你的论坛性能好不到那里去的,肯定像牛一样慢得可怜,在这里,我就是要提醒我们的SQL用户,该注意一下你的数据库大小,如果你的数据库将超过1G,那么你该考虑去动动手了。首先,我认为单个数据库的数据库文件最好不要超过1G,因为我们必须考虑到windows文件系统对单个最原创 2009-08-05 16:43:00 · 3939 阅读 · 0 评论 -
利用Osql创建数据库
1、创建Sql文件,其内容如下:--创建TravLine数据库create database TravLinegouse TravLinego--部门表create table Departments( DeptID char(6) primary key, DeptName Char(20) not null)go 2、创建批处理文件@echo offTITLE HON原创 2009-08-17 15:13:00 · 1378 阅读 · 0 评论 -
SQL Server 2005利用分区对海量数据的处理
超大型数据库的大小常常达到数百GB,有时甚至要用TB来计算。而单表的数据量往往会达到上亿的记录,并且记录数会随着时间而增长。这不但影响着数据库的运行效率,也增大数据库的维护难度。除了表的数据量外,对表不同的访问模式也可能会影响性能和可用性。这些问题都可以通过对大表进行合理分区得到很大的改善。当表和索引变得非常大时,分区可以将数据分为更小、更容易管理的部分来提高系统的运行效率。如果系统有多原创 2009-11-09 15:56:00 · 419 阅读 · 0 评论 -
MS Sql Server数据库分区
什么是数据库分区? 数据库分区是一种对表的横向分割,Sql server 2005企业版和之后的Sql server版本才提供这种技术,这种对表的横向分割不同于2000中的表分割,它对访问用户是透明的,用户并不会感觉的表被横向分割了。(2000中的表横向分割是建n个表例如按时间建表每月一个表,表名不同,最后需要做一个大视图) 为什么要分区? 显而易见分区是为了提高数据库的读写性能,提高数据库原创 2009-11-09 15:58:00 · 476 阅读 · 0 评论