现在的位置: 首页 > 综合 > 正文

解决超过两小时的问题记录

2012年03月19日 ⁄ 综合 ⁄ 共 11997字 ⁄ 字号 评论关闭

有时很小的一个问题可能需要花费很长的时间去解决,这里就记录这些曾经花费我时间的问题。

2011-12-22:

1. 在WinForm窗体中加载包含svg地图的网页,然后对svg上的元素进行赋值。

     原有的顺序:

    a.页面加载完初始化svg元素     

  window.onload = function htmlInit() {
            try {
                EnableWheelScroll(true);   //设置放大和拖动效果
    InitSvgElment();           //初始化Svg元素 
    getSvgDisplayData();//求情数据
    setInterval("getSvgDisplayData()","180000");//每三分钟发送一次请求
            } catch (e) {
                alert(e.message);

            }

     b.winform上也是页面加载完就调用svg的赋值函数,在赋值函数里调用了需要初始化的一些变量

   结果winform在“初始化svg元素”之前执行了,导致不能为地图元素赋值

   修改也很简单,把  InitSvgElment();           //初始化Svg元素  放到

  $(function() {

       InitSvgElment();           //初始化Svg元素 
                   }); 里执行。

2.启动IE访问带有svg地图的网页,IE就崩溃重启

   这是和360安全卫士有关,只用使用360进行系统修复就会对ie的一些设置进行“优化”,导致访问svg插件就崩溃

   关于部分电脑IE访问SVG自动重启问题  http://jiangzheng.iteye.com/blog/1275234  提供了解决方法

3. 在普通电脑上运行的没问题的创建注册表项函数,在装有小红伞杀毒软件的电脑上就崩溃了不能使用

         RegistryKey Run = HKLM.CreateSubKey(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\");

     改成

       RegistryKey Run = HKLM.OpenSubKey(@"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\");

     就可以了。

主要是测试不全面啊,导致部署到用户那了才发现这问题。 

4. 在js里创建字典 Scripting.Dictionary报异常“ActiveX 部件不能创建对象”

   这个错误很常见,主要是要注册一些 active dll就能解决。

  关键是这个问题也是在部署后运行很长一段时间之后报出来的,原因也是360惹的祸。看来生产机上还是尽量不要安装360为好。

   ActiveX 部件不能创建对象 Scripting.Dictionary 的解决方法   http://www.cnblogs.com/291099657/archive/2009/01/02/1366955.html

 

2011-12-31:

5.原来写了一个日志转发到邮箱的小程序,在一个项目中设置的是两小时发送一次,刚开始时运行很好,后来我就收不到邮件了。于是怀疑客户那外网断了或者服务器重启后没人登陆系统程序没能自动运行。后来同事过去查看说外网没问题,机器也没有重启,软件还在运行着。他查看后我又能收到邮件了。。。。。。问题不解中啊!!!其实我这位同事没有给我说一个异常情况,在他查看软件已经弹出了一个“发送邮件错误”的提示框。看看代码:

        private void LogTimer_Tick(object sender, EventArgs e)
        {
            this.LogTimer.Stop();
            try
            {
                this.SendEmail(true);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "邮件发送失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            this.LogTimer.Start();
        }

    问题就出在这个弹出框上,在无人值守的情况下没人去点击这个弹出框,定时器就停在那里了。。。。。于是不能收到邮件了。

2012-1-11:

6. 在windows Serveice 中获取当前应用程序路径

  记得好久以前有个windows service项目,使用 System.Environment.CurrentDirectory+“/Log.txt”方式指定路径,开发时没有调试这段代码,后来在服务程序所在目录下怎么也找不到日志文件,经过调试才知道 在winform程序下使用 System.Environment.CurrentDirectory 可以返回当前目录,但是Windows Service下返回的却是   

 "C:\\WINDOWS\\system32",同样如果不知道路径直接使用类似于 System.IO.File.Create("aaa.txt") 的代码创建日志文件,该文件也是在 "C:\\WINDOWS\\system32" 目录下。一般在windows service项目中使用 AppDomain.CurrentDomain.BaseDirectory 可以正确获取当前目录。

 2012-2-4:

7.因为房东不想提供网络了,所以换了一个不能称作公司的小公司提供所谓的光纤到楼的网络,在他们安装时就听一个做线的抱怨网线不好,并且在接网线时竟然是直接剥皮连接1236(好像是这四个)用白色胶带缠上完事,更要命的是在楼道里布线竟然把网线和电线绑一起。我的现象是昨天晚上网络用的好好的快睡觉时ADSL 678错误连不上了,但网卡是好的,就睡觉了。今天在外面玩了一天,晚上回来发现楼道里电线和网线绑一起的那个保护器跳闸了,也没在意推上去就算了。进屋发现

网络还是不行,网卡灯不亮。于是理线找到我的那个头,集线器那里竟然没插。果断插上,问题依旧。怀疑是线做的有问题,就把那帮做网络的找来了。来了三个人一个据说是老员工闲的很牛气的样子用牙咬水晶头。网线头都重做了,他们竟然不带测线器,还是插电脑上测试,灯依旧不亮。怀疑我的网卡驱动有问题,卸载重装,问题依旧,其实除非是第一次装完的系统驱动出问题的可能性非常小。后来就把他们给我做的线插到我的一个无线路由器上,灯亮,证明他们做的线没问题。找跟网线把我电脑接路由器上,灯不亮,网卡有问题。

但昨天用的好好的,一天没动,网卡不应该出现问题啊,百思不得其解。拿着手机手电筒对着网卡看了半天发现里面有个跟头发丝一样的东西,大口吹出来,插上网线问题依旧啊。关机重启,灯不亮,重启过程中插上笔记本电源,网卡灯亮了。启动后插拔几次,没问题。换了个长网线跟外面的网线对接,连上之后,灯就不亮了。又反复几次验证是不是网卡和电源之间的模块有问题啊,贴近电脑闻了下没异味,呵呵。拿着电脑到走廊里找了一个很短的网线连到集线器上,灯亮,联网没问题。我觉着问题出在网线上,冒着生命危险我把网线和电信捆绑在一起的扎线隔断,把网线耷拉着,插到电脑上,问题解决了。

过程很曲折啊,觉着他们这种创业型公司如果不注意技术细节,也许会走不少网络。技术是创业的本钱啊。

 

2012-4-15:  离职了,把以前的工作记录文档贴过来

1.命令行暂停iis: net stop iisadmin
命令行启动iis:net start iisadmin ; net start w3svc
注意,启动iis需要执行两个命令,一个是 net start iisadmin ,这个是网上最常见的,一般的教程里多是这么写的,但是这样无法启动http服务的.所以还要执行一个 net start w3svc 命令,这样就可以启动iis的服务了.
所以,总结一下,命令行打开IISs 需要两个命令,命令行关闭IIS只需一个命令.
==========================================================================================================================
1、获取用户表名:
SELECT name FROM sysobjects WHERE type = 'U' AND sysstat = '83'

注意:一般情况只需要type = 'U',但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能排除这些系统表了

2、得到表中的所有列信息(包含数据类型名):
SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length
FROM syscolumns, systypes
WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id('tableName')

注意点:
(1)这里为了重点突出某些重要内容,选取了其中几项信息输出。
(2)syscolumns表中只含有数据类型编号,要获取完整的名字需要从systypes表中找,一般用户使用的数据类型用xusertype对应比较好,不会出现一对多的情况。
(3)syscolumns.length得到的是物理内存的长度,所以nvarchar和varchar等类型在数据库中的显示是这个的一半。

3、得到表中主键所包含的列名:
SELECT syscolumns.name
FROM syscolumns,sysobjects,sysindexes,sysindexkeys
WHERE syscolumns.id = object_id('tablename') AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id AND sysindexes.id = syscolumns.id AND sysobjects.name = sysindexes.name AND sysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid AND syscolumns.colid = sysindexkeys.colid

注意:这是在4张系统表中寻找的,关系比较复杂,大致可以表示为:
syscolumns 中存有表中的列信息和表id,sysobjects表中存有主键名字(即PK_Table类似)和表id,sysindexes中存有主键名字和表id和 index编号,sysindexkeys中存有表id和index编号和列编号.
==========================================================================================================================
SQL:检查端口号

问:我创建了一个使用TCP/IP网络图书馆的服务器别名。客户端服务器别名被配置为动态确定所使用的端口。怎样才能找出客户所使用的端口以便我设置自己的防火墙?

答:客户端用于联络SQL Server实例的端口与该实例用于监听客户端请求实例的端口是一样的。您有几种方法来确定正被使用的端口号。请记住,当服务器首次被安装时,SQL Server 动态地选择端口。以后每次服务器暂停工作和重新启动时使用的端口号都是一样的。动态端口分配是一次性的事件。

要查看正被SQL Server实例使用的端口号,可以选择以下的任何一种方法:

打开Server网络实用工具,点击启用的协议列表中TCP/IP条目的属性。

查看特定实例的错误日志。您会在错误日志中看到与下面相似的条目:

SQL Server listening on 127.0.0.1: 1362.
冒号后的四位数是SQL Server正用于监听IP地址的端口,冒号左边是详细的信息。

查看注册表。根据您安装和升级SQL Server的方式,具体的注册表子键会有所不同,但您会看到和下面相似的键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
InstanceName\MSSQLServer\SuperSocketNetLib\Tcp\
InstanceName是您正在使用的SQL Server实例的名称(对于默认实例,InstanceName为MSSQLServer)。该键有一个名为TcpPort的条目,其中包含了正在被使用的端口号。

您需要这个端口号来设置客户端和服务器之间的防火墙。客户端向SQL Server的UDP 1434端口发送特殊的请求,以确定使用哪一个端口。SQL Server返回可用的服务器实例的列表,以及每个实例正在使用的端口。如果屏蔽了UDP 1434端口,则通过防火墙与SQL Server实例的连接将无法实现。

==========================================================================================================================
Oracle服务说明

HOME_NAME - Oracle Home名称,如OraHome92、OraHome81

(1)OracleServiceSID

数据库服务,这个服务会自动地启动和停止数据库。如果安装了一个数据库,它的缺省启动类型为自动。服务进程为Oracle.EXE,参数文件initSID.ora,日志文件SIDALRT.log,控制台SVRMGRL.EXE、SQLPLUS.EXE。

(2)OracleHOME_NAMETNSListener

监听器服务,服务只有在数据库需要远程访问时才需要(无论是通过另外一台主机还是在本地通过 SQL*Net 网络协议都属于远程访问),不用这个Oracle服务就可以访问本地数据库,它的缺省启动类型为自动。服务进程为TNSLSNR.EXE,参数文件 Listener.ora,日志文件listener.log,控制台LSNRCTL.EXE,默认端口1521、1526。

(3)OracleHOME_NAMEAgent

OEM代理服务,接收和响应来自OEM控制台的任务和事件请求,只有使用OEM管理数据库时才需要,它的缺省启动类型为自动。Oracle服务进程为DBSNMP.EXE,参数文件snmp_rw.ora,日志文件nmi.log,控制台LSNRCTL.EXE,默认端口1748。

(4)OracleHOME_NAMEClientCache

名字缓存服务,服务缓存用于连接远程数据库的Oracle Names 数据。它的缺省启动类型是手动。然而,除非有一台Oracle Names 服务器,否则没有必要运行这个服务。服务进程为ONRSD.EXE,参数文件NAMES.ORA,日志文件ONRSD.LOG,控制台 NAMESCTL.EXE。

(5)OracleHOME_NAMECMAdmin

连接管理服务,是构建Connection Manager服务器所用,只有服务器作为Connection Manager才需要,它的缺省启动类型是手动。服务进程为CMADMIN.EXE,参数文件CMAN.ORA,日志文件CMADM_PID.TRC,控制台CMCTL.EXE,默认端口1830。

(6)OracleHOME_NAMECMan

连接网关服务,是构建Connection Manager服务器所用,只有Oracle服务器作为Connection Manager才需要,它的缺省启动类型是手动。服务进程为CMGW.EXE,参数文件CMAN.ORA,日志文件CMAN_PID.TRC,控制台 CMCTL.EXE,默认端口1630。

(7)OracleHOME_NAMEDataGatherer

性能包数据采集服务,除非使用Oracle Capacity Planner 和 Oracle Performance Manager,否则不需要启动,它的缺省启动类型是手动。服务进程为VPPDC.EXE,日志文件alert_dg.log,控制台 vppcntl.exe。

(8)OracleHOME_NAMEHTTPServer

Oracle提供的WEB服务器,一般情况下我们只用它来访问Oracle Apache 目录下的Web 页面,比如说JSP 或者modplsql 页面。除非你使用它作为你的HTTP服务,否则不需要启动(若启动它会接管IIS的服务),它的缺省启动类型是手动。Oracle服务进程为 APACHE.EXE,参数文件httpd.conf,默认端口80。

(9)OracleHOME_NAMEPagingServer

通过一个使用调制解调器的数字传呼机或者电子邮件发出警告(没试过),它的缺省启动类型是手动。服务进程PAGNTSRV.EXE,日志文件paging.log。

(10)OracleHOME_NAMENames

Oracle Names服务,只有服务器作为Names Server才需要,它的缺省启动类型是手动。Oracle服务进程NAMES.EXE,参数文件NAMES.ORA,日志文件NAMES.LOG,控制台NAMESCTL.EXE,默认端口1575。

(11)OracleSNMPPeerMasterAgent

SNMP服务代理,用于支持SNMP的网管软件对服务器的管理,除非你使用网管工具监控数据库的情况,否则不需要启动,它的缺省启动类型是手动。服务进程为AGNTSVC.EXE,参数文件MASTER.CFG,默认端口161。

(12)OracleSNMPPeerEncapsulater

SNMP协议封装服务,用于SNMP协议转换,除非你使用一个不兼容的SNMP代理服务,否则不需要启动,它的缺省启动类型是手动。服务进程为ENCSVC.EXE,参数文件ENCAPS.CFG,默认端口1161。

(13)OracleHOME_NAMEManagementServer

OEM管理服务,使用OEM时需要,它的缺省启动类型是手动。Oracle服务进程为OMSNTSVR.EXE,日志文件oms.nohup。
==========================================================================================================================
Oracle10g 在PLSQL Developer上建立表空间脚本 Oracle10g 在PLSQL Developer上建立表空间脚本
创建表空间
create tablespace Joy

datafile 'D:\oracle\product\10.2.0\oradata\orcl\Joy.def' size 500M
autoextend on next 100M maxsize unlimited logging
extent management local autoallocate
segment space management auto;
 

1) DATAFILE: 表空间数据文件存放路径
2) SIZE: 起初设置为200M
3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k
4) 空间名称MOF_TEMP与 数据文件名称 MOF_TEMP.dbf 不要求相同,可随意命名.
5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间
6) alter database datafile ' D:\oracle\product\10.2.0\oradata\orcl\MOF_TEMP.dbf ' resize 500m; //手动修改数据文件大小为500M
删除表空间
DROP TABLESPACE Joy INCLUDING CONTENTS AND DATAFILES;
 

二.创建用户

create user test identified by test default tablespace Joy;

三.授权

grant dba to Joy;
grant unlimited tablespace to Joy;

==========================================================================================================================

SQL Server 2005的ROW_NUMBER,以及ROW_NUMBER时不排序 --1.看到NHibernate是这样写的分页,感觉写起来比较容易理解(应该不会有效率问题吧?)
--with只是定一个别名?

with query as (select ROW_NUMBER() over(order by (select 0)) AS ROWNUM, * FROM Product)
select * from query where ROWNUM BETWEEN 5 AND 10

--2.ROW_NUMBER必须指写over (order by **),有时我根本就不想排序,想按原始顺序(排序也是要时间的嘛)
--方法就是:
select ROW_NUMBER() over(order by (select 0)) AS ROWNUM,* FROM Product

--要说的就这么多。
==========================================================================================================================
解决ORA-12560: TNS: 协议适配器错误,与大家共享
今天遭遇ORA-12560: TNS: 协议适配器错误的问题,经过一番努力问题已经解决,与大家共享。
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,

启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务

面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SI

D设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建

,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下

输set oracle_sid=XXXX,XXXX就是你的database SID.
经过以上步骤,就可以解决问题。
===============================================================================================================================
双网卡主机设置双网关的方法
Web主机需要进行内部网和互连网的双向访问,一个子网为中立区,通过电信出口连接Internet,网关设为192.168.1.254;一个子网采用路由器专线,与单位大型内部网相连,网关设为10.1.8.254。

每个机器装两块网卡分设两个网关[一般情况下重要单位是不充许同时物理连接两个网络的,不安全]。现在只有每次改变网关才能在Internet和内部网之间通信,但不能同时与Internet和内部网相连。问题是能不能不改变网关就同时与Internet和内部网相连?

结合网上的各种网关路由知识,最简单的方法为:

1.设置其中接internet的网卡的网关为192.168.1.254,启用后就是默认网关;

2.将连接单位内部网的网卡IP配好后,设网关设置为空(即不设网关),启用后,此时内网无法通过网关路由;

3.输入route print,查看内部网IP的metric;

3.进入CMD,运行:

route -p add 10.0.0.0 mask 255.0.0.0 10.1.8.254 metric 30

(意思是将10*的IP包的路由网关设为10.1.8.254 ,-p 参数代表永久写入路由表)

4.同时启用两个网卡,两个网关可以同时起作用了,两个子网也可以同时访问了,关机重启后也不用重设!

===============================================================================================================================

PLSQL Developer oracle 10g 创建、删除表空间,更名,
通过pl/sql登录到Oracle数据库上,然后执行菜单:文件/新建/命令窗口 ,打开一个命令窗口然后在该命令窗口中执行脚本创建和删除表空间

创建表空间

create tablespace db_name_
datafile 'D:\oracle\product\10.2.0\oradata\orcl\db_name_.dbf' size 200M
autoextend on next 10M maxsize unlimited logging
extent management local autoallocate
segment space management auto;

1) DATAFILE: 表空间数据文件存放路径

2) SIZE: 起初设置为200M

3) UNIFORM: 指定区尺寸为128k,如不指定,区尺寸默认为64k

4) 空间名称:db_name_ 与 数据文件名称 db_name_.dbf 不要求相同,可随意命名.

5) AUTOEXTEND ON/OFF 表示启动/停止自动扩展表空间

6) alter database datafile ' D:\oracle\product\10.2.0\oradata\orcl\db_name_.dbf ' resize 500m; //手动修改数据文件大小为500M

7) DROP TABLESPACE db_name_ INCLUDING CONTENTS AND DATAFILES; //删除表空间

测试创建表空间
create tablespace IMSTEST
datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\HNORCL\IMTEST.def' size 200M       
autoextend on next 20M maxsize unlimited logging
extent management local autoallocate
segment space management auto;
commit;

创建用户,设置DBA角色
CREATE USER MARTIN
IDENTIFIED BY martinpwd
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
例如:
--创建新用户
CREATE USER jack
IDENTIFIED BY "123"
DEFAULT TABLESPACE "USERS"
TEMPORARY TABLESPACE "TEMP"
grant connect to jack ;
grant dba to jack ;
grant sysdba to jack ;

//删除用户
drop user jack   cascade;

[Oracle 10g]-关于表空间的更名
     SQL> COL FILE_NAME format a70
  SQL> SET linesize 120
  SQL> SET pagesize 99
  SQL> COL TABLESPACE_NAME format a10
  SQL>
  SQL> SELECT file_name, tablespace_name FROM dba_data_files;

 ==================================================================

2012-05-17:

1.还原数据库时老是说无法获取独占访问权,使用下面这条语句就管用了
ALTER DATABASE portal_develop SET OFFLINE WITH ROLLBACK IMMEDIATE

 

2. Flex的跨域访问WebService

   a.在站点下放一个跨域文件

   b.在flex里初始化函数中加一条加载跨域文件的语句。

遇到的两个问题:

  a.跨域文件的格式,从 flash play 9.0 之后有新的格式,这个一开始没注意到

  b.在flex中加载跨域文件时需要引用一个包名,一开始不知道。

 

。。。。未完待续

 

 

 

 

 

抱歉!评论已关闭.