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 
db_name(database_id),
object_name(object_id),
ghost_record_count,
version_ghost_record_count

FROM sys.dm_db_index_physical_stats(DB_ID(N'db_name'), OBJECT_ID(N'table_name'), NULL, NULL , 'DETAILED');


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

 

基本 LINQ 查询操作

一,linq to datatable
1,查询数量
using System.Linq;

 dt.AsEnumerable()
                .Count(row => row.Field<string>(“Column-A”) == “Y”
                           || row.Field<string>(“Column-A”) == “N”);
DataTable的select只能用一个条件。2,top 1
dtExtOperate.AsEnumerable().First(dr => dr.Field<string>("RoleID") == "1101021");
XML:

return xdoc.Descendants(“Cache”).First(u => u.Attribute(“key”) != null && u.Attribute(“key”).Value == Key).Attribute(“value”).Value;

3,

关键字 var :

    指示编译器根据初始化语句右侧的表达式推断变量的类型。 推断类型可以是内置类型、匿名类型、用户定义类型或 .NET Framework 类库中定义的类型。这样我们就可以在上述的LINQ表达式中 例如可简写为: var nums = from n in nums where .... orderby... select....

4,linq工具 http://www.linqpad.net/

5,linq延迟加载,在用的时候再执行

6,排重

 

// 
IEnumerable<DataRow> rows = dt.AsEnumerbale();
// 去重复
IEnumerable<DataRow> distinctRows = rows.Distinct(DataRowComparer.Default);

7,select many:选择多个输出列


string[] fullNames = { "Anne Williams", "John Fred Smith", "Sue Green" };
            IEnumerable<string> query = fullNames.SelectMany(name => name.Split());
            foreach (string name in query)
                Console.Write(name + "|"); // Anne|Williams|John|Fred|Smith|Sue|Green|


8,查询是否存在
dtExtOperate.AsEnumerable().Any(dr => dr.Field<int>(“MenuID”) == MenuID)

9.出处 http://www.cnblogs.com/jfzhu/archive/2013/01/01/2841332.html

image

image

image

image

image

image

image

image

image


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

SqlDependency类有一OnChangeEventHandler方法,可注册委托,当接收到改变时,用委托实施数据更改自动通知前台
例:http://www.360doc.com/content/09/0609/16/32573_3830694.shtml
用此方法可实现删除过期的缓存。要注意的
是command 指定的 commandText 的查询结果发生变化时触发 OnChange,且只触发一次,故需要在触发事件中再次建立依赖和绑定接受通知.sqlDependency start后,会开户一个线程等待,当通知由服务器的service Broker传来的时候,线程收到信息,调用回调函数

sqlDependency的start与stop都是控制线程的开关,注意此线程是全局性的,共享。

不过.net同时有SqlCacheDependency,可自动完成删除缓存的操作。

相关sql:

–订阅
–在做出通知后,会进行删除,所以需要重新订阅
 
select * from sys.dm_qn_subscriptions
 
–信息对接
SELECT TOP 50 * 
FROM sys.transmission_queue

–关掉订阅
KILL QUERY NOTIFICATION SUBSCRIPTION  10

要达到的效果:
将数据库中的数据放到缓存中,当数据变化时,自动通过应用删除缓存
Sql server 7.0/2000下 SqlCacheDependency使用轮询的方式进行缓存失效检查,
Sql server 2005/2008下增加使用查询通知方式进行缓存失效检查。

实施:
参考:http://space.itpub.net/16436858/viewspace-630489
http://www.cnblogs.com/over140/archive/2009/01/15/1376318.html

1.检测是否已经启用Service Broker

  Select DATABASEpRoPERTYEX('数据库名称','IsBrokerEnabled')  — 1 表示已经启用 0 表示没有启用

2.启用Service Broker                   

  ALTER DATABASE 数据库名称 SET ENABLE_BROKER;              

 –WITH ROLLBACK IMMEDIATE;
GO
 

3.给您的数据库访问帐号授予权限

  GRANT SUBSCRIBE QUERY NOTIFICATIONS TO test

  注意:这一步非常重要, 如果没有权限, 数据库改变的通知将无法接收, cache永远都不会被刷新,注意 sa授此权限(ms禁止), 所以,换个数据库访问帐号即可.
或者用:alter authorization on database::[<your_SSB_DB>] to [sa];
4,缓存代码

/// <summary>
    /// 设置表依赖缓存
    /// </summary>
    public static DataTable GetTableCache(string TableName, string CacheDataBase,string ConnStr)
    {
        System.Web.Caching.Cache objCache = HttpRuntime.Cache;
        DataTable dt = new DataTable();
        //objCache.Insert(CacheKey, objObject);
        if (objCache[TableName] == null)
        {
            try
            {
                //get from database
                DataSet ds = new DataSet();
 
                SqlDependency.Start(ConnStr);//启动与关闭放在Global的Application_Start,End中好一些
 
                using (SqlConnection connection = new SqlConnection(ConnStr))
                {
                    //只有sql中指定的字段发生更改时才会提醒。
                    string sql = string.Format(" SELECT ID,ParentID,Name,OrderBy,OrganID FROM dbo.mdCity");
 
                    using (SqlCommand command = new SqlCommand(sql, connection))
                    {
                        SqlCacheDependency dependency = new SqlCacheDependency(command);
 
                        //using (SqlDataAdapter adapter = new SqlDataAdapter()) //查询数据
                        //{
                        //    adapter.SelectCommand = command;
                        //    adapter.Fill(ds);
                        //}
 
                        //HttpRuntime.Cache.Insert("EntityResourceCollection", ds, dependency);
                        connection.Open();
                        dt.Load(command.ExecuteReader(CommandBehavior.CloseConnection));
                        objCache.Insert(TableName, dt, dependency);
                    }
 
                }
 
 
            }
            catch
            {
 
            }
 
        }
        else
        {
            dt = (DataTable)objCache[TableName];
        }
 
        return dt;
    }

5,注意 只有sql中指定字段发生更改时才会提醒。

关于SqlDependency类,它的限制很多,特别要注意的就是command的sql语句问题:
select id,name from dbo.test where id<>4 order by id desc 
他只能支持上面这样的简单语句
表名前需要架构名,如dbo

sql注意

满足下列要求的 SELECT 语句支持查询通知:

  • 必须显式说明 SELECT 语句中提取的列,并且表名必须限定为两部分组成的名称。注意,这意味着语句中引用的所有表都必须处于同一数据库中。
  • 语句不能使用星号 (*) 或 table_name.* 语法指定列。
  • 语句不能使用未命名列或重复的列名。
  • 语句必须引用基表。
  • 语句不能引用具有计算列的表。
  • 在 SELECT 语句中提取的列不能包含聚合表达式,除非语句使用 GROUP BY 表达式。提供 GROUP BY 表达式时,选择列表便可以包含聚合函数 COUNT_BIG() 或 SUM()。但是,不能为可为空的列指定 SUM()。语句不能指定 HAVING、CUBE 或 ROLLUP。
  • 在用作简单表达式的 SELECT 语句中提取的列不能多次显示。
  • 语句不能包含 PIVOT 或 UNPIVOT 运算符。
  • 语句不能包含 UNION、INTERSECT 或 EXCEPT 运算符。
  • 语句不能引用视图。
  • 语句不能包含下列任意一个:DISTINCT、COMPUTE、COMPUTE BY 或 INTO。
  • 语句不能引用服务器全局变量 (@@variable_name)。
  • 语句不能引用派生表、临时表或表变量。
  • 语句不能从其他数据库或服务器中引用表或视图。
  • 语句不能包含子查询、外部联接或自联接。
  • 语句不能引用下列大型对象类型:textntext 和 image
  • 语句不能使用 CONTAINS 或 FREETEXT 全文谓词。
  • 语句不能使用行集函数,包括 OPENROWSET 和 OPENQUERY。
  • 语句不能使用下列任何一个聚合函数:AVG、COUNT(*)、MAX、MIN、STDEV、STDEVP、VAR 或 VARP。
  • 语句不能使用任何具有不确定性的函数,包括排名函数和窗口函数。
  • 语句不能包含用户定义聚合。
  • 语句不能引用系统表或视图,包括目录视图和动态管理视图。
  • 语句不能包含 FOR BROWSE 信息。
  • 语句不能引用队列。
  • 语句不能包含无法更改和无法返回结果的条件语句(如 WHERE 1=0)。
  • 语句不能指定 READPAST 锁提示。
  • 语句不能引用任何 Service Broker QUEUE。
  • 语句不能引用同义词。
  • 语句不能具有基于 double/real 数据类型的比较或表达式。


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

将配置信息放到XML中,利用cache放到内存中,同时增加一文件依赖,保证配置文件改变时自动删除缓存。

 private DataTable GetData()
        {
            DataTable tableData = new DataTable();
            if (Cache["data"] == null)
            {
                DataSet ds = new DataSet();
                string filePath = Server.MapPath("~/XMLFile.xml");
                ds.ReadXml(filePath);
                tableData = ds.Tables[0];
                CacheDependency cdy = new CacheDependency(filePath);
                Cache.Insert("data", tableData, cdy);
               
            }
            else
            {
                tableData = (DataTable)Cache["data"];
            }
            return tableData;
        }
    

——-

<?xml version="1.0" encoding="utf-8" ?>
<book>
  <item>
    <bookName>算法设计</bookName>
    <author>清华</author>
  </item>
  <item>
    <bookName>高级数据库技术</bookName>
    <author>中山大学</author>
  </item>
</book>


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
  XDocument xdoc = XDocument.Load(@"XMLFile1.xml");
            var product = from u in xdoc.Descendants("product")
                        where u.Parent.Attribute("urlKeyWords").Value.IndexOf("postpar") >= 0
                        select u;
            foreach (var u in product)
            {
                string name = u.Attribute("text").Value;
                Console.WriteLine(name);
            }
            Console.Read();

<?xml version="1.0" encoding="utf-8" ?>

<Products>
<WebSite urlKeyWords="postpartum">
<product text="dd" value="dd" amount ="1000"></product>
<product text="dd1" value="dd1" amount ="2000"></product>
<product text="dd2" value="dd2" amount ="3000"></product>
<product text="dd3" value="dd3" amount ="4000"></product>
</WebSite>
<WebSite urlKeyWords="aaaaaa">
<product text="aa" value="aa" amount ="11"></product>
<product text="aa2" value="aa2" amount ="112"></product>
<product text="aa3" value="aa3" amount ="113"></product>
 
</WebSite>
<WebSite urlKeyWords="bbbbbb">
<product text="bbbb" value="bbbb" amount ="22"></product>
<product text="bbbb22" value="bbbb22" amount ="2222"></product>
</WebSite>
</Products>
 


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
  2.     d.PERCENT_COMPLETE AS [%Complete],
  3.     d.TOTAL_ELAPSED_TIME/60000 AS ElapsedTimeMin,
  4.     d.ESTIMATED_COMPLETION_TIME/60000   AS TimeRemainingMin,
  5.     d.TOTAL_ELAPSED_TIME*0.00000024 AS ElapsedTimeHours,
  6.     d.ESTIMATED_COMPLETION_TIME*0.00000024  AS TimeRemainingHours,
  7.     s.text AS Command
  8. FROM    sys.dm_exec_requests d
  9. CROSS APPLY sys.dm_exec_sql_text(d.sql_handle)as s
  10. WHERE  d.COMMAND LIKE 'RESTORE DATABASE%'
  11. ORDER   BY 2 desc3 DESC    
  12. 可统计为以下命令完成的工作的百分比:

    • ALTER INDEX REORGANIZE
       
    • AUTO_SHRINK 选项(带 ALTER DATABASE)
       
    • BACKUP DATABASE
       
    • CREATE INDEX
       
    • DBCC CHECKDB
       
    • DBCC CHECKFILEGROUP
       
    • DBCC CHECKTABLE
       
    • DBCC INDEXDEFRAG
       
    • DBCC SHRINKDATABASE
       
    • DBCC SHRINKFILE
       
    • KILL (Transact-SQL)
       
    • RESTORE DATABASE,
       
    • UPDATE STATISTICS.


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,跳过命令的执行。


1,查看错误
SELECT DISTINCT xact_seqno
FROM dbo.MSrepl_errors
WHERE time >='2013-02-24'

--查看错误明细,分发库
SELECT mse.time,mse.error_text,CAST(SUBSTRING(command, 7, 8000) AS NVARCHAR(MAX)) command ,
	   ms.article,ma.name,ma.publisher_db,mh.comments,mse.xact_seqno,mse.error_code,mh.duration
FROM  dbo.MSrepl_errors mse
JOIN MSdistribution_history mh ON mse.id = mh.error_id
JOIN MSdistribution_agents ma ON mh.agent_id = ma.id
JOIN MSrepl_commands msc ON mse.xact_seqno = msc.xact_seqno
LEFT JOIN  MSarticles ms ON msc.article_id = ms.article_id
WHERE mse.time>='2013-07-18 14:00'


2,查看错误
 EXEC Sp_browsereplcmds 
  @xact_seqno_start = '0x00015F2B00002A26000300000000', 
  @xact_seqno_end = '0x00015F2B00002A26000300000000' 

3,解决数据冲突,若不能解决且数据不重要,可以删除命令的执行
DELETE a
FROM dbo.MSrepl_transactions a
WHERE xact_seqno  IN(0x00046FBE00002BFB000400000000)

DELETE a
FROM dbo.MSrepl_commands a
WHERE xact_seqno  IN(0x00046FBE00002BFB000400000000)

DELETE a
FROM dbo.MSrepl_errors a
WHERE xact_seqno = 0x00046FBE00002BFB000400000000

4,查看相关命令

SELECT TOP 50 msc.xact_seqno,CAST(SUBSTRING(command, 7, 8000) AS NVARCHAR(MAX))  --INTO #
  FROM dbo.MSrepl_commands msc(NOLOCK)
  JOIN MSrepl_transactions a(NOLOCK) ON msc.xact_seqno = a.xact_seqno
  WHERE entry_time>='2013-04-26' AND CAST(SUBSTRING(command, 7, 8000) AS NVARCHAR(MAX)) LIKE '%sp_MSupd_dboHandlerAllocateOrder%'

5,查询命令相关的表数据


CREATE TABLE #t(xact_seqno VARBINARY(16),originator_srvname VARCHAR(50),
originator_db VARCHAR(50),article_id int,type int,partial_command int,
hashkey int,originator_publication_id int,originator_db_version int,
originator_lsn VARBINARY(16),command VARCHAR(1000),command_id int)


SELECT  msc.xact_seqno INTO #
FROM dbo.MSrepl_commands msc(NOLOCK)
JOIN MSrepl_transactions a(NOLOCK) ON msc.xact_seqno = a.xact_seqno
WHERE entry_time>='2013-04-26 14:30' AND CAST(SUBSTRING(command, 7, 8000) AS NVARCHAR(MAX)) LIKE '%sp_MSupd_dboHandlerAllocateOrder%'


DECLARE PCUR 
CURSOR FOR
SELECT xact_seqno
FROM #

DECLARE @V1 VARBINARY(22),@V2 VARCHAR(50)
OPEN PCUR
FETCH NEXT  FROM PCUR  INTO @V1

WHILE @@FETCH_STATUS = 0

BEGIN
	SET @v2 =  master.dbo.fn_varbintohexstr(@V1)

	INSERT INTO #T
	EXEC Sp_browsereplcmds 
	  @xact_seqno_start =@v2, 
	  @xact_seqno_end =@v2

	FETCH NEXT  FROM PCUR  INTO @V1
END
CLOSE PCUR
DEALLOCATE PCUR

SELECT t.originator_db,ms.article,
SUBSTRING(command,CHARINDEX(',{',command)+2,CHARINDEX('},',command,2)-CHARINDEX(',{',command)-2) rowkey,
SUBSTRING(command,CHARINDEX(' [',command)+1,CHARINDEX('] ',command,2)+1-CHARINDEX(' [',command)) sp, t.xact_seqno
FROM #T t
JOIN distribution.dbo.MSarticles ms(NOLOCK) ON t.article_id = ms.article_id


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

2008开始存错过程可以带表参数,不过限制只读。

CREATE TYPE [dbo].[MyTable] AS TABLE
02.(
03.[id] [int],
04.[value] [nvarchar](128)
05.)
06.GO
07. 
08.CREATE PROCEDURE [dbo].[Capitalize]
09.(
10.@myTable [dbo].[MyTable] READONLY
11.)
12.AS
13.BEGIN
14.DECLARE @myOutput [dbo].[MyTable]
15. 
16.INSERT INTO @myOutput([id], [value])
17.SELECT [id], UPPER([value]) FROM @myTable
18. 
19.SELECT [id], [value] FROM @myOutput
20.END
21.GO
22. 
23.DECLARE @myTable [dbo].[MyTable]
24.DECLARE @myOutput [dbo].[MyTable]
25. 
26.INSERT INTO @myTable([id], [value])
27.VALUES
28.(1, 'one'),
29.(2, 'two'),
30.(3, 'three')
31. 
32.INSERT INTO @myOutput([id], [value])
33.EXEC [dbo].[Capitalize] @myTable
34. 
35.SELECT * from @myOutput


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
If connections exist on a database , and you attempt to detach a database with EXEC master.dbo.sp_detach_db @dbname = N'database_name' the detach will fail.

Best practise is to identify the connection sources and communicate with the users, and closing the connection gracefully. Communicating with the users is not always possible .

Instead of using the KILL command ,use this command to set the database into SINGLE_USER mode. The SINGLE_USER mode indicates for only one user to access the database. The ROLLBACK IMMEDIATE option terminates ,rolling back all transactions not completed and disconnecting all other connections immediately.

 

 

USE [master]
GO
ALTER DATABASE [database_name] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N'database_name'
GO


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

一、运行–>输入“perfmon.msc”

二、在“系统监视器”图表区域里点击右键,然后点“添加计数器” 
三、在“添加计数器”窗口,“性能对象”选择Web Service,“从列表选择计数器”选中Current Connection,“从列表选择实例”选中你要统计的站点,最后点击“添加”按钮


Warning: Undefined array key "HTTP_REFERER" in /www/wwwroot/prod/www.enjoyasp.net/wp-content/plugins/google-highlight/google-hilite.php on line 58
net use x: \\172.16.88.204\soft-0509 密码 /user:administrator /persistent:yes


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

USE CedarLog
GO


CREATE TABLE [dbo].[ChangeLog](
	[LogId] [INT] IDENTITY(1,1) NOT NULL,
	[DatabaseName] [VARCHAR](256) NOT NULL,
	[EventType] [VARCHAR](50) NOT NULL,
	[ObjectName] [VARCHAR](256) NOT NULL,
	[ObjectType] [VARCHAR](25) NOT NULL,
	[SqlCommand] [NVARCHAR](MAX) NOT NULL,
	[EventDate] [DATETIME] NOT NULL CONSTRAINT [DF_EventsLog_EventDate]  DEFAULT (GETDATE()),
	[LoginName] [VARCHAR](256) NOT NULL,
	[IP] [VARCHAR](50) NOT NULL,
 CONSTRAINT [PK_ChangeLog] PRIMARY KEY CLUSTERED 
(
	[LogId] DESC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO



CREATE TRIGGER [backup_objects]
ON ALL SERVER 
FOR CREATE_PROCEDURE, ALTER_PROCEDURE, DROP_PROCEDURE,
CREATE_TABLE, ALTER_TABLE, DROP_TABLE,CREATE_VIEW, ALTER_VIEW, DROP_VIEW,
CREATE_FUNCTION, ALTER_FUNCTION, DROP_FUNCTION
AS
SET NOCOUNT ON
DECLARE @data XML SET @data = EVENTDATA()
IF @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)') NOT LIKE 'SqlQuery%'
BEGIN
	INSERT INTO CedarLog.dbo.changelog(databasename, eventtype, objectname, objecttype, sqlcommand, loginname,IP) 
	VALUES( @data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'), 
	@data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'), 
	@data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'), 
	@data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'), 
	@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'), 
	@data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)'),
	CONVERT(VARCHAR(50),CONNECTIONPROPERTY('client_net_address') ) )
END	
GO

ENABLE TRIGGER [backup_objects] ON ALL SERVER
GO



--查看服务器级别的触发器 
SELECT TOP 50 * FROM sys.server_triggers 

--查看服务器级别的触发器的定义 
SELECT * FROM sys.server_sql_modules 

--查看激发触发器的数据库事件的信息 
SELECT TOP 50 * FROM sys.server_trigger_events

--删除服务器上的DDL触发器 
DROP TRIGGER backup_objects ON ALL SERVER

--失效DDL触发器
DISABLE TRIGGER backup_objects ON ALL SERVER

--获取有关数据库范围内的触发器的信息 
SELECT * FROM sys.triggers 

--获取有关激发触发器的数据库事件的信息 
SELECT * FROM sys.trigger_events 

--查看数据库范围内的触发器的定义 
SELECT * FROM sys.sql_modules 

--删除当前数据库上的DDL触发器 
DROP TRIGGER backup_objects ON DATABASE
 


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

起因:
IE6/IE7从安全性角度考虑,
支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,firefox,chrome无此问题。
即在IE6/IE7下,嵌入的页面若与主页面域不同,则嵌入页的cookie不能被主域读取,也就意味着保存在cookie中的sessionid是没有的,在上传服务器时,因没有传sessionid,服务器是读取不了已经创建的session中的内容。
解决方案:
第1种:

> 打开IIS管理器 inetmgr
> 选择被嵌入iframe源站点或者目录,右键点击打开属性框 
> 切换到HTTP头 
> 添加 
> 自定义HTTP头名: P3P
> 自定义HTTP头值: CP="CAO PSA OUR"
> 关闭属性框退出,即刻生效

第2种:
在被嵌入页面page_onload里添加一语句:Response.AddHeader("P3P","CP=CAO PSA OUR");


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

VLQ 是 Variable-length quantity 的缩写,是一种通用的,使用任意位数的二进制来表示一个任意大的数字的一种编码方式。这个编码方式是在 MIDI 文件格式中定义的,用来节省空间

线编码解码的网站:http://murzwin.com/base64vlq.html ,
开源库相关实现:
https://github.com/mozilla/source-map/blob/master/lib/source-map/base64-vlq.js,

首先我们先来了解下 VLQ 是什么,VLQ 是 Variable-length quantity 的缩写,是一种通用的,使用任意位数的二进制来表示一个任意大的数字的一种编码方式。这个编码方式是在 MIDI 文件格式中定义的,用来节省空间。在其他地方也有很多类似这样的编码格式,比如在 Google’s protocol buffers 中,还有我们马上要讨论到的 BASE64 VLQ 中。想了解的更多,请参考wikipedia

我们先来看看 MIDI 中的 VLQ 编码是如何编码 137 这个数字的吧:(摘抄自 wikipedia)

  • 先把 137 转换成二进制:10001001
  • 7 bit 一组,把二进制分开,不足的补 0 ,变成 0000001 0001001
  • 把最低的7位拿出来,在最高位补0表示最后一位,变成 0000 1001,这个作为最低位,放在最后边。
  • 在其他组的最高位补 1 ,表示没有结束,后面跟着还有数据。在这里就是 1000 0001
  • 拼在一起,就变成了 1000 0001 0000 1001 .

这就是 VLQ 的变化过程。

那么什么是 Base64 VLQ 呢?和上面的变换过程有什么区别呢?

我们可以先来参考我博客的另外一篇文章,先来回顾下 Base64 编码:BASE64 编码规则

我们可以看到 Base64 是一种可以把二进制数据编码成用 ASCII 表示的一种编码规则,但是受限于 Base64 采用的字符集,一个 Base64 字符只能表示 6bit 的数据。所以上面的 VLQ 中 7 bit 一组的分组方式,在这里就要变成 5 bit 一组的分组了。

另外,Base64 VLQ 需要能够表示负数,于是规定了需要先把数字变成无符号数,用最后一位来作为符号标志位。我们直接来做一个变换吧,这样理解的最快。在例子中可以看到和上面的 VLQ 编码还是有一定差别的。

不妨还拿 137 来做示例吧。

  • 先把 137 转换成二进制:10001001
  • 由于 137 是正数,所以在最低位补0 变成 100010010
  • 按照 5bit 一组的方式分组,变成 01000 10010
  • 按照从低位到高位的顺序,以 5bit 一组为单位,依次拿出数据做转换。
  • 先拿出第一组 10010 , 因为后面还有数据,所以需要在高位补 1,变成 110010 ,编码成 Base64: y
  • 再拿出第二组,也是我们这里的最后一组,01000 , 由于是最后一组,所以在高位补 0 变成 001000,编码成 Base64: I
  • 按照从低位到高位的顺序把这些 ASCII 字符拼接起来,变成 yI

可以看到在 VLQ 中,编码顺序是从高位到低位,在 Base64 VLQ 中,编码顺序是从低位到高位。

那么如何解码呢?相信了解了编码过程后,解码过程就不必再讲解了。

参考:http://blog.allenm.me/2012/12/base64-vlq-encoding/
http://www.ruanyifeng.com/blog/2013/01/javascript_source_map.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

同一域:指协议、域名,端口号都相同,否则为跨域。
表现为:如在a.com/index.html 利用iframe引用了b.com/index.html,
那么:在a.com/index.html无法更改b.com/index.html的对象,如dom,css等,但是可读取的。即只读
反之,在b.com/index.html中对a.com/index.html也是只读的。
//在b.com/index.html中可用document.referrer来引用a.com/index.html的网址
不过,可在a.com/index.html利用对b.com/index.html的访问权限,在b.com中创建一对象,此对象在a.com中是可以操作的。

对于主域相同而子域不同的例子,可以通过设置document.domain的办法来解决。
具体的做法是可以在http://www.a.com/a.html和http://script.a.com/b.html两个文件中分别加上document.domain = ‘a.com’;然后通过a.html文件中创建一个iframe,去控制iframe的contentDocument,这样两个js文件之间就可以“交互”了。当然这种办法只能解决主域相同而二级域名不同的情况

引用:http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.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

浏览器对同一个域名访问的并发数是有限制的,同一时间下,如下表:

浏览器 并发数
IE 6,7 2
IE 8 6
Firefox 2 2
Firefox 3 6
Safari 3,4 4
Chrome 1,2 6
Chrome 3 4
Chrome 4+ 6
iPhone 2 4
iPhone 3 6
iPhone 4 4
Opera 9.63,10.00alpha 4
Opera 10.51+ 8

因为浏览器只对单个域名限制并发数,而不对单个IP限制并发数,所以可将一个IP地址映射到多个域名,然后使用这些域名访问网站资源,这样原本浏览器的并发数为6,使用两个域名并发数就可以达到12个了。但需要注意的是,域名并不是越多就越好的,因为域名解析也需要花费时间,而且并发数太多也会耗费客户端太多的CPU,域名数量到了一定程度,网页性能就会开始下降,所以在应用中需要根据实际情况寻找一个平衡点。如果不是特别需要,一般24个为佳。


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  DATABASEPROPERTYEX('mydb','version'),SERVERPROPERTY('Edition') [已安装产品版本], SERVERPROPERTY('ProductLevel') [SQL Server 实例的版本级别],SERVERPROPERTY('ProductVersion') [SQL Server 实例的版本]


QL Server Version

Internal Database Version

SQL Server 2008 R2

665

SQL Server 2008

661

SQL Server 2005 SP2+ with vardecimal enabled

612

SQL Server 2005

611

SQL Server 2000

539

SQL Server 7

515
Release
Product Version
SQL Server 2012 Service Pack 1 11.00.3000.00
SQL Server 2012 RTM 11.00.2100.60
SQL Server 2008 R2 Versions
Release Product Version
SQL Server 2008 R2 Service Pack 1 10.50.2500.0
SQL Server 2008 R2 RTM 10.50.1600.1
SQL Server 2008 Versions
Release Product Version
SQL Server 2008 Service Pack 3 10.00.5500.00
SQL Server 2008 Service Pack 2 10.00.4000.00
SQL Server 2008 Service Pack 1 10.00.2531.00
SQL Server 2008 RTM 10.00.1600.22
SQL Server 2005 Versions
Release Product version
SQL Server 2005 Service Pack 4 9.00.5000.00
SQL Server 2005 Service Pack 3 9.00.4035
SQL Server 2005 Service Pack 2 9.00.3042
SQL Server 2005 Service Pack 1 9.00.2047
SQL Server 2005 RTM 9.00.1399
SQL Server 2000 Versions
Release Product version
SQL Server 2000 Service Pack 4 8.00.2039
SQL Server 2000 Service Pack 3 8.00.760
SQL Server 2000 Service Pack 3 8.00.760
SQL Server 2000 Service Pack 2 8.00.534
SQL Server 2000 Service Pack 1 8.00.384
SQL Server 2000 RTM 8.00.194
 


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,引入DLL
2,配置对应关系html与aspx
3,加入配置
4,IIS中配置isapi,以解析html

参考:http://www.bingd.com/blog/html/UrlRewriter.htm
参考:http://blog.zhaojie.me/2008/01/url-rewrite-2.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

1、错误号401.1

症状:HTTP 错误 401.1 – 未经授权:访问由于凭据无效被拒绝。

分析:

由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用,或者没有权限访问计算机,将造成用户无法访问。

解决方案:

(1)查看IIS管理器中站点安全设置的匿名帐户是否被禁用,如果是,请尝试用以下办法启用:

控制面板->管理工具->计算机管理->本地用户和组,将IUSR_机器名账号启用。如果还没有解决,请继续下一步。

(2)查看本地安全策略中,IIS管理器中站点的默认匿名访问帐号或者其所属的组是否有通过网络访问服务器的权限,如果没有尝试用以下步骤赋予权限:

开始->程序->管理工具->本地安全策略(secpol.msc)->安全策略->本地策略->用户权限分配,双击“从网络访问此计算机”,添加IIS默认用户或者其所属的组。

注意:一般自定义 IIS默认匿名访问帐号都属于组,为了安全,没有特殊需要,请遵循此规则。 2、错误号401.2


症状:HTTP 错误 401.2 – 未经授权:访问由于服务器配置被拒绝

原因:关闭了匿名身份验证

解决方案:

运行inetmgr,打开站点属性->目录安全性->身份验证和访问控制->选中“启用匿名访问”,输入用户名,或者点击“浏览”选择合法的用户,并两次输入密码后确定。

错误号:401.3

症状:HTTP 错误 401.3 – 未经授权:访问由于 ACL 对所请求资源的设置被拒绝。

原因:IIS匿名用户一般属于Guests组,而我们一般把存放网站的硬盘的权限只分配给administrators组,这时候按照继承原则,网站文件夹也只有administrators组的成员才能访问,导致IIS匿名用户访问该文件的NTFS权限不足,从而导致页面无法访问。

解决方案:

给IIS匿名用户访问网站文件夹的权限,方法:进入该文件夹的安全选项,添加IIS匿名用户,并赋予相应权限,一般是读、写。 


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

反向代理(Reverse Proxy)方式是指以代理服务器来接受外部的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给外部的请求连接的客户端,此时代理服务器对外就表现为一个服务器。

反向代理服务器位于本地WEB服务器和外部网络之间,如下图所示:

当用户浏览器发出一个HTTP请求时,通过域名解析将请求定向到反向代理服务器(如果要实现多个WEB 服务器的反向代理,需要将多个WEB服务器的域名都指向反向代理服务器)。由反向代理服务器处理器请求。反向代理一般只缓存可缓冲的数据(比如html网 页和图片等),而一些CGI脚本程序或者ASP.NET/JSP之类的程序不缓存。它根据从WEB服务器返回的HTTP头标记来缓冲静态页面。有四个最重要HTTP头标 记:

  • Last-Modified: 告诉反向代理页面什么时间被修改
  • Expires: 告诉反向代理页面什么时间应该从缓冲区中删除
  • Cache-Control: 告诉反向代理页面是否应该被缓冲
  • Pragma: 告诉反向代理页面是否应该被缓冲.

Application Request Routing(ARR)是一个基于代理的路由模块,可以根据HTTP头、服务器变量和负载均衡算法将HTTP请求转发到内容服务器上。它可以增强应用程序的效率和可扩展性,更好地利用内容服务器资源,并能够简化应用程序的部署,包括pilot management和A/B测试。ARR还有一种特性叫做shared hoster,用于修改如何共享目前提供的共享主机,为客户增加额外的服务。IIS 7.0 的应用请求路由模块(Application Request Routing (ARR) module),我们可以轻松实现反向代理.如何使用可参看下列几篇文章:

如何利用 IIS7 的 ARR 模??做 Reverse Proxy ?制

在IIS7中应用Application Request Routing配置反向代理

web developer tips (36):使用IIS7.0 应用请求路由模块管理网站的beta版程序

用 IIS 7、ARR ? Velocity 建设高性能的大型网站

IIS 6可以使用google code上一个项目:A C# reverse proxy for IIS

引自http://www.cnblogs.com/shanyou/archive/2009/11/15/1603245.html