【转载】SQLSERVER内核架构剖析
我们做管理软件的,主要核心就在数据存储管理上。所以数据库设计是我们的重中之重。为了让我们的管理软件能够稳定、可扩展、性能优秀、可跟踪排错、可升级部署、可插件运行,我们往往研发自己的管理软件开发平台。我们总是希望去学习别人的开发平台(如用友或金蝶或SAP),但我们却总是感叹管理软件业务处理细节繁多,而数据库管理软件却简单的SELECT、INSERT、DELETE、UPDATE四个命令就搞定。我们多希望有一天能做出一个架构,也可以这么简单就搞定管理软件。我们往往研究别人的架构,却忘记了我们身边我们最熟悉的数据库的架构。所以,今
导出数据脚本
SET NOCOUNT ONDECLARE @tblName nvarchar(100)DECLARE @DBName nvarchar(100)DECLARE @i intDECLARE @j intDECLARE @ssql nvarchar(max)DECLARE @sCloumns nvarchar(max)DECLARE @CloumnName nvarchar(100)DECLARE @xtype intDECLARE @isnullable intSET @tblName = 'tbl_StationInfo'SET @DBName = 'Station'CREATE TABLE #tbl_columnIDs(name nvarchar(100),id nvarchar(100),xtype int,isnullable int,row int identity)INSERT INTO #tbl_columnIDsSELECT name,id,xtype,isnullableFROM SYSCOLUMNS WHERE id = OBJECT_ID(@tblName)SET
station Data
INSERT INTO tbl_StationInfo([LineNo],StationName,StationSequence) VALUES ('1',N'莘庄','-12') INSERT INTO tbl_StationInfo([LineNo],StationName,StationSequence) VALUES ('1',N'外环路','-11') INSERT INTO tbl_StationInfo([LineNo],StationName,StationSequence) VALUES ('1',N'莲花路','-10') INSERT INTO tbl_StationInfo([LineNo],StationName,StationSequence) VALUES ('1',N'锦江乐园','-9') INSERT INTO tbl_StationInfo([LineNo],StationName,StationSequence) VALUES ('1',N'上海南站','-8') INSERT INTO tbl_StationIn
上海地铁查询脚本
EXEC p_SelectStation @StartStation=N'巨峰路', @EndStation=N'四平路'CREATE PROCEDURE p_SelectStation@StartStation nvarchar(50),@EndStation nvarchar(50)ASSET NOCOUNT ON--DECLARE @StartStation nvarchar(50)--DECLARE @EndStation nvarchar(50)DECLARE @Strategy nvarchar(50)--SET @StartStation=N'巨峰路'--SET @EndStation=N'四平路'--SET @StartStation=N'世纪大道'--SET @EndStation=N'四平路'--SET @StartStation=N'巨峰路'--SET @EndStation=N'共康路'DECLARE @Line1 intDECLARE @Line2 intDECLARE @StartLine TABLE(Li
查找包含有中文和全角的字段
create table T (a nvarchar(40),name varchar(50))insert into T(a) select '我a'insert into T(a) select 'dasda'insert into T(a) select 'a人'insert into T(a) select 'rest'insert into T(a) select 'COLLATE76保险'select *,datalength(ltrim(rtrim(convert(varchar(40),a)))),len(ltrim(rtrim(convert(varchar(40),a)))) ,datalength(a),len(a)from Twhere datalength(ltrim(rtrim(convert(varchar(40),a))))>len(ltrim(rtrim(convert(varchar(40),a))))[@more@]
查找字段中包含任意字符的数据
select * from wages where patindex('%[一-龥]%',collatesee)>0[@more@]
数据库状态为可疑的解决方法
SQL SERVER 2005 数据库状态为“可疑”的解决方法 --MyDB为修复的数据名 USE MASTER GO SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE GO ALTER DATABASE MyDB SET EMERGENCY GO sp_dboption 'MyDB', 'single user', 'true' GO DBCC CHECKDB('MyDB','REPAIR_ALLOW_DATA_LOSS') GO ALTER DATABASE MyDB SET ONLINE GO sp_configure 'allow updates', 0 reconfigure with override GO sp_dboption 'MyDB', 'single user', 'false' GO[@more@]
磁盘阵列(Disk Array)原理
今天PDM的两台服务器都已经到位了。做了RADIO5,其实我对这个真不熟悉,找了点资料看看。转自IXPUB1.为什么需要磁盘阵列?如何增加磁盘的存取(access)速度,如何防止数据因磁盘的故障而失落及如何有效的利用磁盘空间,一直是电脑专业人员和用户的困扰;而大容量磁盘的价格非常昂贵,对用户形成很大的负担。磁盘阵列技术的产生一举解决了这些问题。过去十几年来,CPU的处理速度增加了五十倍有多,内存(memory)的存取速度亦大幅增加,而数据储存装置--主要是磁盘(hard disk)--的存取速度只增加了三、四倍,形成电脑系统的瓶颈,拉低了电脑系统的整体
批量替换数据表里的数据
SET NOCOUNT ON DECLARE @TName varchar(100) --TableName DECLARE @FieldName varchar(100) --ReplaceFieldNameDECLARE @OldKeyVale varchar(max) DECLARE @ReplaceKeyValue varchar(max) SET @TName ='tbl_ddl_log' SET @FieldName = 'TSQL' SET @OldKeyVale = 'TesttableReplace'SET @ReplaceKeyValue ='Testtable' DECLARE @SQL varchar(max) SET @SQL = ' DECLARE @KeyFrontValue nvarchar(max) DECLARE @KeyBehindValue nvarchar(max) DECLARE @T TABLE(RowNum int,OldKeyValue nvarchar(max)) INSERT INTO @T SELECT Row_Number()o
主 表 主建 所有外建引用查找
SET NOCOUNT ON DECLARE @TbName varchar(50) SET @TbName ='tbl_Survey' DECLARE @ColName varchar(50) SET @ColName ='SurveyCode' DECLARE @TblID varchar(50),@ColuID varchar(50) SELECT @TblID = id FROM sysobjects WHERE [name] = @TbName SELECT @ColuID = colid FROM syscolumns WHERE id = @TblID AND [name] = @ColName SELECT B.Name as F_TblName, C.Name as F_ColName INTO #TmpTbl FROM SYS.sysforeignkeys as A,SYS.sysobjects as B, SYS.syscolumns as C WHERE A.rkeyid = @TblID And A.rkey = @ColuID And B.id = fkey
sql server 系统表的作用
1:获取当前数据库中的所有用户表 select Name from sysobjects where xtype='u' and status>=0 2:获取某一个表的所有字段select name from syscolumns where id=object_id('表名') 3:查看与某一个表相关的视图、存储过程、函数select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%' 4:查看当前数据库中所有存储过程select name as 存储过程名称 from sysobjects where xtype='P' 5:查询用户创建的所有数据库select * from master..sysdatabases D where sid not in(select sid fr