Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
T-SQL Enhancements
参考:英文中文

1,WITH RESULT SETS
更改存储过程返回结果表的字段名类型
CREATE PROCEDURE Denali_WithResultSet  AS  
BEGIN         
    SELECT 1 as No,’Tsql’ Type, ‘WithResultSet’ AS Feature
    UNION ALL  SELECT 2 as No,’Tsql’ Type, ‘Throw’ AS Feature 
    UNION ALL SELECT 3 as No,’Tsql’ Type, ‘Offset’ AS Feature 
    UNION ALL SELECT 4 as No,’Tsql’ Type, ‘Sequence’ AS Feature  
END  
GO  
EXEC Denali_WithResultSet  
WITH RESULT SETS  (( No int,FeatureType varchar(50), FeatureName varchar(50) )   )

2,OFFSET and FETCH
offset过滤几行 fetch:取下面的几行
SELECT top 15 * FROM dbo.frmuser f(NOLOCK) order BY account     
SELECT * FROM dbo.frmuser f(NOLOCK) order BY account OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY   
SELECT top 5 * FROM ( SELECT * ,ROW_NUMBER()OVER (ORDER BY account)n FROM frmuser f)m WHERE m.n>10

3,SEQUENCE
提供自增长,与identity不同的是不依赖与表,并且是全局性的 可不设置最大值,若到最大值时可自动循环。
CREATE SEQUENCE SeqRange  AS int   START WITH 1   INCREMENT BY 1     MINVALUE 1      MAXVALUE 5    CYCLE ;//循环自动    
SELECT NEXT VALUE FOR dbo.SeqRange  S
ELECT NEXT VALUE FOR dbo.Seq; 
 SELECT NEXT VALUE FOR dbo.Seq;

到达最大值后,可重置
ALTER SEQUENCE seq  RESTART WITH 1

赋值:
DECLARE @I INT
SELECT @I = NEXT VALUE FOR dbo.SeqRange
SELECT @i

查询当前值

SELECT cache_size, current_value 
FROM sys.sequences
WHERE name = 'SeqRange' ;
 

相关存储过程
DECLARE @first_value sql_variant,
@last_value sql_variant
EXEC sp_sequence_get_range @sequence_name = N’SeqRange’, @range_size = 4, @range_first_value = @first_value OUTPUT, @range_last_value = @last_value OUTPUT;
SELECT @first_value AS FirstNumber, @last_value as LastNumber

应用:订单号生成
可在表定义时使用,这样我们就能在插入之前获取ID
create table t1 ( orderID integer default (next value for dbo.TestID), OrderDesc varchar(50) )

4,FORCESEEK and FORCESCAN
forceseek:强制查询按某个索引查找
forecescan:强制查询按查个索引扫描

5,
EOMONTH:返回当月最后一天
CHOOSE:返回列表中的第几个值
Select Choose (2, 'January', 'February', 'March');
IIF:三值逻辑
SELECT IIF (@a > @b, 'TRUE', ‘FALSE’) AS Result;
CONCAT: 连接,可多种类型,如整型与字符串相加
SELECT CONCAT ('age:',1) AS Result;

OVER 增强
unbounded preceding:从头开始
CURRENT ROW:当前行
unbounded following:尾

如:
SELECT *
FROM (
SELECT bc.CustomerName, bo.OrderDate,bo.OrderNo,bo.Amount,
last_value(orderdate) OVER( PARTITION BY bc.ID ORDER BY bo.OrderDate RANGE BETWEEN unbounded preceding AND unbounded following ) lastorderdate
FROM dbo.bmdCustomer bc(NOLOCK)
JOIN dbo.bdOrder bo(NOLOCK) ON bc.ID = bo.CustomerID
–WHERE bc.id IN(1819,2206,2444)
)m
WHERE m.orderdate = m.lastorderdate
ORDER BY CustomerName,OrderDate

6,分析函数
lag:返回按某种排序相比当前行,上几行的字段 LAG (scalar_expression [, offset], [default]) OVER ([partition_by_clause] order_by_clause)
SELECT TOP 10 Account,lag(account,1,'开始') OVER( ORDER BY account )
FROM dbo.frmuser
ORDER BY account

SELECT TOP 10 Account,lead(account+'aaa',1,'开始') OVER( ORDER BY account )
leag:返回按某种排序相比当前行,下几行的字段
LAST_VALUE 返回 SQL Server 2012 中有序值集中的最后一个值,这个集可用range指定 默认是从第一行到当前这一行:RANGE BETWEEN unbounded preceding AND CURRENT ROW FIRST_VALUE 开头一个值
–需求:取出客户的最近一次购买的订单号与订单金额

SELECT *
FROM (
SELECT bc.CustomerName, bo.OrderDate,bo.OrderNo,bo.Amount,
last_value(orderdate) OVER( PARTITION BY bc.ID ORDER BY bo.OrderDate RANGE BETWEEN unbounded preceding AND unbounded following ) lastorderdate
FROM dbo.bmdCustomer bc(NOLOCK)
JOIN dbo.bdOrder bo(NOLOCK) ON bc.ID = bo.CustomerID
–WHERE bc.id IN(1819,2206,2444)
)m
WHERE m.orderdate = m.lastorderdate
ORDER BY CustomerName,OrderDate

–原方法
SELECT bc.CustomerName, bo.OrderDate,bo.OrderNo,bo.Amount
FROM dbo.bmdCustomer bc(NOLOCK)
JOIN dbo.bdOrder bo(NOLOCK) ON bc.ID = bo.CustomerID
–WHERE bc.id IN(1819,2206,2444)
AND bo.orderdate = ( SELECT MAX(OrderDate)
FROM dbo.bdOrder bo2(NOLOCK)
WHERE bo2.CustomerID = bo.CustomerID)
ORDER BY CustomerName,OrderDate


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

一、内存
1.查看整体内存使用情况
select 
type,
sum(virtual_memory_reserved_kb)/1024 as [VM Reserved],
sum(virtual_memory_committed_kb) as [VM Committed],
sum(awe_allocated_kb) as [AWE Allocated],
sum(shared_memory_reserved_kb) as [SM Reserved], 
sum(shared_memory_committed_kb) as [SM Committed],
sum(multi_pages_kb) as [MultiPage Allocator],
sum(single_pages_kb) as [SinlgePage Allocator]
from 
sys.dm_os_memory_clerks 
group by type
order by [VM Reserved] DESC 
 
其中,MEMORYCLERK_SQLBUFFERPOOL就是表数据,执行计划的缓存,占用的最大。
分析MEMORYCLERK_SQLBUFFERPOOL有哪些数据,采用如下方法:
 
1)下面的这组语句,就可以打印出当前内存里缓存的所有页面的统计信息。
declare @name nvarchar(100)
declare @cmd nvarchar(1000)
declare dbnames cursor for
select name from master.dbo.sysdatabases
open dbnames
fetch next from dbnames into @name
while @@fetch_status = 0
begin
set @cmd = 'select b.database_id, db=db_name(b.database_id),p.object_id,p.index_id,buffer_count=count(*) from ' + @name + '.sys.allocation_units a, '
+ @name + '.sys.dm_os_buffer_descriptors b, ' + @name + '.sys.partitions p
where a.allocation_unit_id = b.allocation_unit_id
and a.container_id = p.hobt_id
and b.database_id = db_id(''' + @name + ''')
group by b.database_id,p.object_id, p.index_id
order by b.database_id, buffer_count desc'
exec (@cmd)
fetch next from dbnames into @name
end
close dbnames
deallocate dbnames
go
 
2) 在一条语句第一次执行前后各运行一遍上面的脚本,就能够知道这句话要读入多少数据到内存里。
例如如果运行下面的脚本:
dbcc dropcleanbuffers
go
—-Copy the previous scripts here
Go
use adventureworks
go
select * from person.address
go
—-Copy the previous scripts again here
Go
 
3) 用下面的查询可以得到各种对象各占了多少内存:
select objtype, sum(size_in_bytes) as sum_size_in_bytes, count(bucketid) as cache_counts
from sys.dm_exec_cached_plans
group by objtype
 
4) 如果想要分析具体存储了哪些对象,可以使用下面的语句。但是要注意把结果集输出到一个文件里,因为这个查询的结果在一个生产服务器上会很大的。如果要输出到Management Studio里,对运行这个查询的那台机器的资源会有争用,进而影响到同一台机器上的SQL Server运行。
SELECT usecounts, refcounts, size_in_bytes, cacheobjtype, objtype, text 
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(plan_handle) 
ORDER BY objtype DESC;
GO
 
二 使用DMV分析SQL Server启动以来做read最多的语句
1. 按照物理读的页面数排序,前50名。
SELECT TOP 50
qs.total_physical_reads,qs.execution_count,
        qs.total_physical_reads /qs.execution_count as [Avg IO],
            SUBSTRING(qt.text,qs.statement_start_offset/2, 
(case when qs.statement_end_offset = -1 
then len(convert(nvarchar(max), qt.text)) * 2 
else qs.statement_end_offset end -qs.statement_start_offset)/2) 
as query_text,
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid,
qs.sql_handle,
qs.plan_handle
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY qs.total_physical_reads desc
 
2. 按照逻辑读的页面数排序,前50名。
SELECT TOP 50
qs.total_logical_reads,qs.execution_count,
        qs.total_logical_reads /qs.execution_count as [Avg IO],
            SUBSTRING(qt.text,qs.statement_start_offset/2, 
(case when qs.statement_end_offset = -1 
then len(convert(nvarchar(max), qt.text)) * 2 
else qs.statement_end_offset end -qs.statement_start_offset)/2) 
as query_text,
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid,
qs.sql_handle,
qs.plan_handle
FROM sys.dm_exec_query_stats qs
cross apply sys.dm_exec_sql_text(qs.sql_handle) as qt
ORDER BY qs.total_logical_reads desc
 
3. 使用SQL Trace文件来分析某一段时间内做read最多的语句。
例如现在在c:\sample目录下收集了一个问题时段的trace文件,叫A.trc。第一步要将里面所有的存储过程和批命令执行完成的记录保存到SQL Server里。
select * into Sample
from fn_trace_gettable('c:\sample\a.trc',default)
where eventclass in (10, 12)
 
语句执行完了以后,可以用下面的查询看看里面的数据长什么样。
Select top 1000 textdata, databaseId, HostName, ApplicationName, LoginName, SPID,
Starttime, EndTime, Duration, reads, writes, CPU 
from sample
 
a. 找到是哪台客户端服务器上的哪个应用发过来的语句,从整体上讲在数据库上引起的读最多。
select databaseId,HostName,ApplicationName, sum(reads)
from sample
group by databaseId,HostName,ApplicationName
order by sum(reads) desc
 
b. 按照作的reads从大到小排序,最大的1000个语句。
select top 1000 textdata, databaseId, HostName, ApplicationName, LoginName, SPID,
Starttime, EndTime, Duration, reads, writes, CPU 
from sample
order by reads desc
 


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
For SQL 2005, delete the file:
02. 
03.C:\Documents and Settings\\Application Data\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat
04. 
05.For SQL 2008, the file location, format and name changed:
06. 
07.C:\Documents and Settings\\Application Data\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin
08. 
09. 
10. 

  1. Shut down all instances of SSMS
  2. Delete/Rename the file
  3. Open SSMS
11. 
12.For Windows 7, it's in the following:
13. 
14.SQL 2005:
15.C:\Users\\AppData\Roaming\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat
16. 
17.SQL 2008:
18.C:\Users\\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

 


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
For many reasons SQL Server DBAs need to find the last date and time of an update on a sql table. The SQL Server DMV sys.dm_db_index_usage_stats  can supply enough information to allow the DBA to make a good estimate of the time.

In this case I needed to create a list candidates for tables to be deleted. The data became bloated with a number of different temp tables .

The one drawback of using the DMV is that data is refreshed after every SQL Server restart.

This script lists all tables in the current database, with various columns assisting in deciding the last update.

 

SELECT
tbl.name
,ius.last_user_update
,ius.user_updates
,ius.last_user_seek
,ius.last_user_scan
,ius.last_user_lookup
,ius.user_seeks
,ius.user_scans
,ius.user_lookups
FROM
sys.dm_db_index_usage_stats ius INNER JOIN
sys.tables tbl ON (tbl.OBJECT_ID = ius.OBJECT_ID)
WHERE ius.database_id = DB_ID()
last_user_update - Time of last user update.
user_updates - Number of updates by user queries.
last_user_seek - Time of last user seek .
last_user_scan - Time of last user scan.
last_user_lookup - Time of last user lookup.
user_seeks - Number of seeks by user queries.
user_scans - Number of scans by user queries.
user_lookups - Number of bookmark lookups by user queries

Related Posts

SQL Server – Last DML operation

SQL Server - Calculate table size with existing data

How to request SQL Server troubleshooting


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

--合并表
--输出调成以文本格式显示结果
DECLARE pcur CURSOR FOR
SELECT a.name,a.object_id
FROM sys.tables a
WHERE name IN('bdRecordTrace',
'bdTrace',
'bmdCustomerAsk',
'bmdCustomerShipRep',
'bmdTelTrace',
'bdfollowrecord')

DECLARE @tableName VARCHAR(50),@object_id INT,@insertsql NVARCHAR(max)
OPEN pcur
FETCH NEXT FROM pcur INTO @tableName,@object_id
WHILE @@FETCH_STATUS = 0
BEGIN 
	SET @insertsql = ''
	--SET @insertsql = 'INSERT INTO dbo.' + @tablename + '( '
	SELECT @insertsql = @insertsql + ',' + c.name
	FROM sys.columns c
	WHERE c.object_id = @object_id
	ORDER BY column_id
	SET @insertsql =  '--'+@tablename + '--'
					  + CHAR(13)  
					  +'INSERT INTO dbo.' + @tablename + '( ' + STUFF(@insertsql,1,1,'') + ')' 
					  + CHAR(13) 
					  +  'SELECT * ' 
					  + CHAR(13)
					  +'FROM [211].BRM_LVJIAN.DBO.' + @TableName + ' a'
					  + CHAR(13)
					  +'WHERE NOT EXISTS( SELECT 1 FROM dbo.'+@tableName+' b(NOLOCK) WHERE b.id = a.id )'
					  + CHAR(13)
					  + 'GO'
					  + CHAR(13)
	PRINT @insertsql
	FETCH NEXT FROM pcur INTO @tableName,@object_id
END 
CLOSE pcur
DEALLOCATE pcur


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1.什么是TFS

1.1.TFS(Team Foundation Server )

1.2.与VS集成在一起的版本控制,团队协作的工具

 

2.为什么选择TFS

2.1.VSS最高是2005版本

2.2.TFS是VSS的高级版本,替代版本

2.3.TFS提供VSS没有的功能

 

2.3.1.项目化

2.3.1.1.bug管理

2.3.1.2.报表统计

2.3.1.3.每一个项目可以有网站,与sharepoint连接在一起

2.3.2.多人签出同一文件

2.3.3.分支

2.3.3.1.使用纯分支模型

2.3.3.2.引入分支可视化

2.3.4.可定时备份

 

 

2.4.界面对比(左:TFS 右:VSS)
TFS <--> VSS

TFS <–> VSS

 

 

 

 

 

3.如何使用

3.1.连接

3.1.1.更改源代码控制方式

从IDE菜单中选择“工具(Tools)”->“选项(Options)”,在选项对话框中,找到源代码管理(Source Control | Plug-in),然后选择Visual Studio Team Foundation Server

源代码控制工具更改源代码控制工具更改

 

 

 

 

 

 

3.1.2.连接

 

为避免每次连接TFS都要输入账号密码,请执行记住账号操作:

1. 单击“开始”,单击“运行”,键入“control userpasswords2” 或 输入“control keymgr.dll”

2. 单击“高级”选项卡,然后单击“管理密码”。

 

 

配置连接TFS服务器的账号 (账号名密码都是每人的姓名拼音)

 

配置账号配置账号


 

 

 

 

 

 

 

 

 

3.1.2.2.执行连接

连接到TFS服务器连接到TFS服务器


 

 

 

 

 

 

 

3.1.3.映射

团队资源管理器视图中找到一项目,双击源代码管理,更改映射 
映射项目

映射项目

 

 

 

 

3.2.签入:签入的时候可以添加注释,在历史中可看到

 

3.3.签出:可多人签出一个文件

多人签出同一文件多人签出同一文件


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

一、安装

1,安装sqlserver2008 r2

2,安装sharepoint (http://www.microsoft.com/zh-cn/download/confirmation.aspx?id=14117http://www.microsoft.com/zh-cn/download/details.aspx?id=20614)

3,安装TFS2010并补 (http://www.microsoft.com/zh-cn/download/details.aspx?id=15070http://www.microsoft.com/zh-cn/download/details.aspx?id=20506)

4,安装team explorer以便在服器上vs team explorertfs2010安装文件下

5,安装tfs powertools (http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f)

 

二、实施迁移

 (http://msdn.microsoft.com/zh-tw/vstudio/gg983556(zh-tw)http://msdn.microsoft.com/zh-cn/library/ms181247(v=vs.80).aspx如何VSS移到TFS2010.pdf)

1,?? VSS 版本必?是 2005

2,安? KB947647,?至下列?址下??安?至 TFS 伺服器上: http://code.msdn.microsoft.com/KB947647/Release/ProjectReleases.aspx?ReleaseId=1028

3,全部checkin

4,使用 Visual SourceSafe 分析用工具复数中的据完整性问题

5,?? VSS ?料?目???一,如 C:\VSSDB,拷?至 TFS 伺服器上,??定在 TFS 上有安? Team Explorer

6,在VS上建立目集合对应VSS上的

7,建立 analysissettings.xml ?定?,存於 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE目?:行:VSSConverter.exe analyze analysissettings.xml 
   例:
   <?xml version="1.0" encoding="utf-8"?>

<SourceControlConverter>
  <ConverterSpecificSetting>
    <Source name="VSS">
      <VSSDatabase name="J:\vss\LvJian_VSS"></VSSDatabase>
      <UserMap name="c:\Migrate\Usermap.xml"></UserMap>
       <SQL Server="LVSHOU-WEBSERVE\SQL2008"></SQL>
    </Source>
    <ProjectMap>
	   <Project Source="$/BIM" Destination="$/BIM"></Project>
		<Project Source="$/Common" Destination="$/Common"></Project>
		<Project Source="$/DBManage" Destination="$/DBManage"></Project>
    </ProjectMap>
  </ConverterSpecificSetting>
  <Settings>
       <TeamFoundationServer name="lvshou-webserver" port="88" protocol="http" collection="tfs/MySystem" ></TeamFoundationServer>
    <Output file="Analysis.xml"></Output>
  </Settings>
</SourceControlConverter>

8,?行成功後?在目前目?出?”Analysis.xml”,一映射文件 (usermap.xml)。?面是分析?果,若????息,???C:\migrate\Usermap.xml,??VSS????至TFS??

9,建立系统账号,在usermap.xml中与VSS原账号对应

10,最合成:? Analysis.xml ?除,方可重??行 VSSConverter.exe,?指令更改如下: VSSConverter.exe migrate analysissettings.xml

在管理工具中lock VSS,关闭VSS


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,将编码格式 encoding="utf-8"指定去掉
2,用记事本打开xml,另存为unicode解决。


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
1.	安装
①	指定数据库位置
?	mongod.exe --dbpath d:\test\mongodb\data
?	若不指定,默认为c:\data\db\
②	运行:
?	mongod.exe
?	以windows服务运行
安装:>mongod.exe --logpath "mongolog.txt" --install
运行: net start mongodb
?	默认端口:27017
③	csharp开发文档 (http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Downloading) 
④	面向文档的非关系数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能。


2.	第2章
①	文档
?	基本单元是文档,类似于数据库中的行
?	每个文档都有特殊的键_id,它在文档所处的集合中是唯一的
?	类似于json,以键值对的形式存在,区分类型与大小写
?	例:> db.test.save( { "username":"asong",age:15} )
②	集合
?	相当于数据库中的表,它里面存储的是“行”文档
?	多个集合组成数据库
?	包含的文档数量> db.test.count()
③	命令操作
?	插入
> db.test.save( { "username":"asong",age:15} )
> db.test.insert({"a":"b"})
?	db:当前数据库
?	test:当前集合
?	显示当前数据库的集合:show collections
?	进行插入时,是否成功如重复,默认是没有提示的
?	查询
> db.text.findOne()
> db.test.find()
db.test.findOne({"username":"asong"})
?	更新
db.test.update({"username":"asong"},{"username":"fangfang"})
?	删除
> db.test.remove({"username":"asong"})
?	>help
?	show dbs
?	输入方法不加括号可看源码如:> db.test.update


3.	第3章创建更新删除文档
①	update可以一次改全部数据, 也可修改文档部分数据
?	$inc:自增 不存在则创建
db.it.update({"name":"pdf"},{"$inc":{"age":3}})
?	$set:设置 不存在则创建
db.it.update({"name":"pdf"},{"$set":{"age":3}})
?	c
若没有,则增加此属性,故可用set 完成文档属性的增加
?	$unset:删除属性
db.it.update({"name":"pdf"},{"$unset":{"age":3}})
②	数组操作
?	值是一文档类型,如db.it.insert({"person":{"name":"zxs",age:28}})
?	$push:增加修改
db.it.update({"name":"pdf"},{"$push":{"www":{"a":3}}})
?	$pop:删除
③	upsert:更新,没有则insert,或者用save


4.	第4章 查询
①	db.it.find({"name":"pdf"})
②	db.it.findOne({"_id":ObjectId("506e3f62e4cfb782ba3d4233")})
③	返回指定属性字段
?	db.it.find({"name":"pdf"},{"age":1,"skill":1})
④	比较运算
?	find({属性:{条件}})  db.test.find({"age":{"$gte":28,"$lte":30}})
?	运算符
$lt:<
$gt:>
$lte,$gte:<=,>=
⑤	逻辑运算
?	OR关系
db.test.find({"$or":[{"age":26},{"age":28}]})
?	IN
db.test.find({"age":{"$in":[26,28]}})
⑥	正则表达式
?	/正则/ :db.test.find({"name":/aso*|fang*/})
⑦	集合遍历
?	> var mycur = db.test.find() > if(mycur.hasNext()) {mycur.next()}
⑧	limit,skip,sort
?	sort:排序 1 升序,-1 降序
?	limit:返回几条结果
?	skip:略过几条,返回剩下的
?	> db.test.find().limit(2).skip(1).sort({"name":1})


5.	第5章 索引
①	创建:1升序 -1降序 :> db.test.ensureIndex({"name":-1})
②	唯一索引:> db.test.ensureIndex({"name":-1},{"unique":true})
③	执行计划查看:explain()
?	> db.test.find({"name":"asong"}).explain() {         "cursor" : "BtreeCursor name_1",         "nscanned" : 3,         "nscannedObjects" : 3,         "n" : 3,         "millis" : 0,         "nYields" : 0,         "nChunkSkips" : 0,         "isMultiKey" : false,         "indexOnly" : false,         "indexBounds" : {                 "name" : [                         [                                 "asong",                                 "asong"                         ]                 ]         } } >
?	结果
cursor:使用的索引,当为BasicCursor时为全表扫描
nscanned:查找的文档数
n:返回的文档数
millis:查询所用时间
④	查看索引:> db.system.indexes.find()
⑤	删除索引:> db.test.dropIndex({"name":1})


6.	第6章 聚合
①	> db.test.count()
②	> db.test.find().distinct({"name","key":"name"})
③	MapReduce:映射化简,将任务拆分到多台服务器执行


7.	第7章 进阶指南
①	db.listCommands():查看命令
②	查看数据库版本及操作系统
?	> db.runCommand({"buildInfo":1})


8.	第8章 管理
①	在mongodb启动时,会启动一HTTP服务器 可通过网页查看数据库性能
?	http://localhost:28017/
②	查看服务器统计信息
?	> db.runCommand({"serverStatus":1})
?	或者cmd下:mongostat
③	备份:mongodump


9.	第9章 复制
①	主从复制
?	一台主机可跑多个mongodb,测试主从
?	启动时指定是主还是从 --master
②	副本集
?	带有故障自动转移的主从复制


10.	第10章 分片
①	将数据拆分,分散到各服务器上
②	复制分发配置都很简单,大部分自动化,核心是键值对,非结构化


11.	第11章 应用举例


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

 开始–>运行–>gpedit.msc
       计算机配置->管理模板->Windows组件->终端服务->会话
       把"为断开的会话设置时间限制"改为"未被配置"。

       如果通过上面的操作,还会出现远程桌面连接断开过段时间之后,运行的软件自动关闭的话,就再进行以下操作:
       开始–>运行–>tscc.msc
       连接–>RDP-Tcp右键属性–>会话
       把这里面的替代用户设置的设置都改为从不,并且把从不勾选。

       需要说明的是:前述工作做完后,本人的远程服务器还是问题依旧,接下来:

       取消开机按ctl+alt+del,这一点大家都会吧。

       开始–>所有程序–>管理工具–>本地安全策略–>本地策略–>安全选项:microsoft网络服务器:当登录时间用完后自动注销用户,改为“已禁用”。microsoft网络服务器:在挂起会话之前所需的空闲时间,改为99999,实际上是禁止了此策略。

       最后,如果可能,到服务器上用administrator登录一次。

       还有,最关键的一步:当您登录远程服务器后,在退出的过程中,不要直接点击远程桌面程序的那个“×”,也不能点注销了。而是在远程服务器的桌面上,点“开始--关机--断开”,这一点十分重要。

Windows Server2003默认情况下允许远程终端连接的数量是2个用户,我们可以根据需要适当增加远程连接同时在线的用户数。
   单击“开始→运行”,输入“gpedit.msc”打开组策略编辑器窗口,依次定位到“计算机配置(computerconfiguration)→管理模板(administrative templates)→Windows 组件(windowscomponents)→终端服务(terminal services)”,再双击右侧的“限制连接数量(limit number ofconnections)”,再双击打开配置窗口(limit number of connectionsproperties),选择enabled 将其TS maximum connections allowed


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1.基金会3 | Foundation 3 世界最先进的响应前端框架。
2.
bootstrap twitter
3.960 Grid System


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
--1,修改文件逻辑位置
	
	--1)查询文件逻辑名,
	SELECT name logical_name, physical_name AS CurrentLocation, state_desc
	FROM sys.master_files
	WHERE database_id = DB_ID('test')
	
	--2)修改
	ALTER DATABASE test MODIFY FILE ( NAME = Test, FILENAME = 'M:\Program Files\SQL Server2008R2\Test.mdf' )
	ALTER DATABASE test MODIFY FILE ( NAME = Test_log, FILENAME = 'M:\Program Files\SQL Server2008R2\Test_log.ldf' )

--2,脱机或停数据库
ALTER DATABASE test SET OFFLINE
 

–3,物理移动数据库文件到新位置。 –4,联机或启动数据库 ALTER DATABASE test SET ONLINE –5,查看效果 SELECT name logical_name, physical_name AS CurrentLocation, state_desc FROM sys.master_files WHERE database_id = DB_ID('test') –参考:http://msdn.microsoft.com/zh-cn/library/ms345483(v=sql.90).aspx


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

select e.name as eventclass,t.loginname, t.spid, t.starttime, 
t.textdata, t.objectid, t.objectname, t.databasename, 
t.hostname, t.ntusername, 
t.ntdomainname, t.clientprocessid, t.applicationname, t.error 
FROM sys.fn_trace_gettable(CONVERT(VARCHAR(150), ( SELECT TOP 1
f.[value]
FROM sys.fn_trace_getinfo(NULL) f --找到日志表
WHERE f.property = 2
)), DEFAULT) T
inner join sys.trace_events e on t.eventclass = e.trace_event_id
where eventclass IN(47,164) --47:OBJECT DELETE, 163 OBJECT ALTER


 --returns full list of events 
SELECT *  FROM sys.trace_events

--returns a full list of categories 
SELECT * FROM sys.trace_categories


--returns a full list of subclass values
SELECT *FROM sys.trace_subclass_values

SELECT TOP 50 *
FROM sys.fn_trace_getinfo(NULL)


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

思维导图
1. 第1章
① 1.文件直接copy到mm上可以当作链接打开 再copy到txt上就能得到这些文件的名称
② 链接链接还是链接
2. 第2章
① 阅读顺序,自1点钟开始,到12点钟,自上而下
② 使用编号,可自动编号
③ 选择关系,可以为分支增加关系并备注
3. 第3章
① 先完成各平行级,再看子级
4. 第5章
① 选择分支,按下F6,选择其它文本,可自动创建分支,每选择一次,自动完成粘贴,称为自动粘贴
② F3可以打开备注
5. 第6章
① 多重链接,按ctrl+H调出
② ctrl+enter只显示当前选择中的分支,隐藏其它
③ 组织中的创建文件夹图表可以自动加链接构图
6. 第7章
① 样式中可以设置大小,形状,并可读取其它样式应用
② 组织中可以拆分合并导图
③ 打包就是将拆分的合在一起打开, 也可对带有多链接的打包,它会将文件都提取出来合并
④ 可在PPT,Project中导入导出
⑤ 可以将文件直接粘到PPT上
7. 第10章
① 进度表分配时间安排
② F4调出窗口
③ 插入从属,选择结束,再选择开始就能设置依赖关系
④ 选中进度表,双击任一条,在弹出的窗口中可以修改进度
⑤ 可以定义资源,安排资源。在资源面板能看到分配情况,还有摘要面板
8. 第11章
① 通过txt或者project完成mindmanager与mindmapper的互换
9. 第12章
① 演示功能可以做出PPT效果展示


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

方案有二种:
1,OPENROWSET
SELECT *
FROM
OPENROWSET('MSDASQL','DRIVER={MySQL ODBC 3.51 Driver};
SERVER=192.168.16.210;PORT=3306;DATABASE=mydb;USER=mas;PASSWORD=123456;
STMT=set names gb2312;OPTION=2049',
'select bill_time,mobile,sms_content from tbl_sm_bill_120809;')

2,建立链接服务器。
  1)安装mysql ODBC
  2) 配置系统DSN,控制面板 – 管理工具-数据源 (ODBC)
  3)sqlserver中增加链接服务器。
参考:How To Setup SQL Server Linked Server to MySQL

  4)使用:SELECT * FROM mysqlsms…tbl_sm_bill_120809
     或者:SELECT * FROM OPENQUERY(mysqlsms, 'SELECT * FROM tbl_sm_bill_120809;')

  对于mysql中列是char型的查询会报错,如:

链接服务器 'cti' 的 OLE DB 访问接口 'MSDASQL' 返回的数据与列 '[MSDASQL].V_Caller' 所需的数据长度不匹配。所需的(最大)数据长度为 60,但返回的数据长度为 24。
  处理方法,在查询时转换一下
  

    SELECT TOP 10 * 
    FROM OPENQUERY(cti, 'SELECT cast(tel as char(30)) FROM mytable;')

INSERT INTO OPENQUERY(Servername,'select * from DBName.tablename WHERE 1=2') --1=2防止查询整个表
SELECT '1'

SELECT *
FROM OPENQUERY(Servername,'select * from DBName.tablename')

UPDATE OPENQUERY(Servername,'select * from DBName.tablename')
SET colname='2'
WHERE colname='1'

SELECT *
FROM OPENQUERY(Servername,'select * from DBName.tablename')

 


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
--1,VS新建数据库项目,,添加新项-sqlserverclr #,添加自定义函数,
--函数前标记 [Microsoft.SqlServer.Server.SqlFunction]
--可直接右建部署。生成后在debug文件夹下会有sql执行的部署文件
--选择一数据库,便于调试与部署测试
--注:--vs并不运行直接添加第三方引用,可参考此种方式:http://updates.sqlservervideos.com/2010/07/adding-references-to-sql-clr-projects.html
--注意,64位的sqlserver不支持32位的dll 

--开启数据库支持
sp_configure 'clr enabled', 1;
RECONFIGURE;
 
--在部署时若程序集引用了其它的dll,应将这些dll先注册进sqlserver再创建自己的程序集
--注册引用
ALTER DATABASE [master] SET TRUSTWORTHY ON
GO
CREATE ASSEMBLY [System.Net.Http]
AUTHORIZATION [dbo]
FROM 
'C:Program FilesReference AssembliesMicrosoftFrameworkv3.5System.Net.Http.dll' –没有的copy放置上
WITH PERMISSION_SET = UNSAFE

–-部署
–-1,建立程序集
–-增加
CREATE ASSEMBLY [SqlServerProject1]
from N'I:ITshareSqlServerProject1.dll'
–或者直接增加二进制文件,二进制文件见部署sql

CREATE ASSEMBLY [MySafe]
    AUTHORIZATION [dbo]
 FROM 0x4D5A900003000000040000....
WITH PERMISSION_SET = UNSAFE;

–-2,映射
CREATE FUNCTION [dbo].[Csharp]
(@code NVARCHAR (4000))
RETURNS NVARCHAR (4000)
AS
 EXTERNAL NAME [CLR].[UserDefinedFunctions].[Csharp]
–删除
DROP FUNCTION Decrypto
DROP ASSEMBLY MySafe

–-查询
/*
TA = 程序集(CLR 集成)触发器 CLR_TRIGGER
FS = 程序集 (CLR) 标量函数 CLR_SCALAR_FUNCTION
FT = 程序集 (CLR) 表值函数 CLR_TABLE_VALUED_FUNCTION
PC = 程序集 (CLR) 存储过程 CLR_STORED_PROCEDURE
*/

–-取调用的函数
SELECT s.type_desc 类型,s.name 名称,f.name 程序集,m.assembly_class 类名,m.assembly_method 方法名
FROM sys.objects s
JOIN sys.assembly_modules m ON s.object_id = m.object_id
JOIN sys.assemblies f ON m.assembly_id = f.assembly_id
WHERE type_desc LIKE 'clr%'
ORDER BY s.type_desc

–-程序集
SELECT TOP 10 *
FROM sys.assemblies

–-程序集对应文件
SELECT TOP 10 *
FROM sys.assembly_files
WHERE assembly_id = 65537
SELECT TOP 10 *
FROM sys.assembly_references

-–程序集对应函数
SELECT TOP 10 *
FROM sys.assembly_modules
SELECT dbo.Decrypto('UW7EcyjrWA2Qanp9nXmjJw==')
SELECT dbo.CLR_Decrypto('F0+zdAqmYv51nUL4fY5Z/w==')
select dbo.CLR_Encrypto('aaa')


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
mssql中有一money类型,可以用来转换
declare @num INT
set @num = 4564654
select replace(convert(varchar,cast(@num as money),1), '.00','') --4,564,654


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

在IIS 6中我们可以直接右击改名称,是因为可以改metabase,但IIS 7不再有metabae,直接更改方式不行,可采用命令方式来完成。

1.应用程序改名
C:\Windows\System32\inetsrv>appcmd list app
APP "Default Web Site/" (applicationPool:DefaultAppPool)
APP "Default Web Site/WebAnalytics.UI" (applicationPool:DefaultAppPool)

C:\Windows\System32\inetsrv>appcmd set app "Default Web Site/WebAnalytics.UI" -path:/WebAnalytics.UI_Snake
APP 对象“Default Web Site/WebAnalytics.UI”已更改


2.虚拟目录改名
C:\Windows\System32\inetsrv>appcmd list vdir
VDIR "Default Web Site/" (physicalPath:%SystemDrive%\inetpub\wwwroot)
VDIR "Default Web Site/test" (physicalPath:D:\)

C:\Windows\System32\inetsrv>appcmd set vdir "Default Web Site/test" -path:/snake

VDIR 对象“Default Web Site/test”已更改




Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

1,应用程序是一个逻辑边界,这个逻辑边界可以分隔网站及其组成部分。虚拟目录则是一个真实的指针,这个指针指向了一个本地或远程物理路径。虚拟目录总是存在于应用程序之中,一个应用程序可包括多个虚拟目录。
2,直观的区别比如应用程序可以设置应用程序池,而虚拟目录则没有。
3,如一网站有两个应用程序,因为这两个应用程序相互之间是分离的,因此也无法共享InProc会话状态、应用程序文件、文件夹。而虚拟目录可以共享InProc会话状态和缓存,因为这两个虚拟目录是同一个应用程序的组成部分。

参考:http://www.cnblogs.com/guilipan/archive/2010/10/05/1500311.html


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58

ashx相当于c#+html,免去了一些aspx的页面处理控件处理页面的部分.
用来ajax获取数据比用纯aspx效率要高

ashx是一个专门的用于处理HttpHandler的文件类型,用来处理自定义Http请求,可以在web.config定义运行时针对ashx的Http请求处理方式。

<add verb="*" path="*.ashx" type="System.Web.UI.SimpleHandlerFactory" validate="false" />

.ashx 文件用于写web handler的。HttpHandler是一个彻底自定义Http请求的方法,它通过web.config来定义Asp.Net运行时来过滤出要自定义的Http请求,发送到定义在web.config的指定类中。
利用.ashx文件是一个更好的方法,这个文件类似于.aspx文件,可以通过它来调用HttpHandler类,从而免去了普通.aspx页面的控件解析以及页面处理的过程。这个文件特别适合于生成动态文本等内容。