如何编辑u盘自动拷贝专家删除数据的运行文件

怎么样实现按键精灵复制文件内容的一部分?
我要打开目录中的一个文本文件。然后,复制里面第一行里的网址,然后再粘贴到外面的软件里,应该怎么做呢?
09-12-14 &匿名提问 发布
如何使用按键精灵?(使用步骤)使用步骤如下:1. 制作脚本:按照个人需求从网上搜集脚本或者自己制作脚本。如果您的脚本是从别的地方收集的,请先把脚本文件拷贝到按键精灵文件夹下的script文件夹中,然后再运行按键精灵。2.选择有效的窗口:建议您选择“对所有窗口有效”。如果您只需要脚本当某个窗口在前台时有效,请选择窗口名称,比如“龙族”3.让需要执行的脚本“有效”,只有“有效”一栏中勾中的脚本才会执行。4.进入游戏(或者其他需要使用按键精灵的软件) ,在需要使用脚本的时候按下脚本的“快捷键”,按键精灵就会忠实的为您工作了。按键精灵主界面图:主界面及功能按钮主界面功能简介:增加:增加一个新的脚本。修改:修改当前选中的脚本。删除:删除当前选中的脚本,可以同时选中多个脚本进行删除。录制:录制新的脚本,新手制作脚本首选功能。上传:将当前脚本上传至按键精灵网站,与他人进行交流。全部有效/无效:让所有脚本有效或者无效。注册:注册按键精灵,使用正版软件。帮助:查看用户帮助手册。图:录制功能录制功能简介:强烈推荐的功能!能够忠实记录您的动作,并在脚本执行时回放,新手也可随心所欲制作脚本。按下ScrollLock键就可以开始录制,再次按下就可停止录制,最后保存即可。如果您需要按键精灵忠实的记录鼠标移动轨迹,在后面的“记录鼠标移动轨迹”前面打个勾就可以了。录制过程中可以随便移动录制工具条,不会对您录制的动作产生任何影响。图:上传脚本上传脚本功能简介:在主界面选择一个脚本,点击“上传”按钮就可以进入上传脚本界面。您可以将自己比较得意的脚本上传到我们的服务器。在您的脚本上传成功之后,我们将会进行人工审核。不错的脚本都会被我们推荐给其他玩家共同学习。上传时按键精灵会自动填写一些信息。请您在“脚本说明”里写上脚本的用途、制作思路等你认为对其他人有帮助的信息。没有说明或者说明不清楚的脚本将无法获得推荐。:-) 脚本编辑器 图:脚本编辑器界面脚本编辑器使用说明:在动作选择区选择动作,插入右边的脚本内容区即可。脚本支持粘贴、复制、移动、删除等操作。脚本编写完毕之后,在脚本设置区进行一些必要的设置,点击“保存脚本” ,就可保存当前制作的脚本,点击右上角的X符号可以关闭编辑器返回主界面。注意:我们默认的终止热键是“F12” ,目前所有的脚本使用同一个终止热键,也就是按下一个终止热键之后,所有的脚本就会停止运行。图:脚本调试功能脚本调试功能简介:脚本调试功能允许您随时观察脚本的执行顺序,也可以随意暂停/继续脚本的运行,方便查找脚本错误。当您点击“执行”后,脚本将会开始执行,同时记录下每一步执行了哪条动作(语句),您可以随时按“暂停”热键暂时中止脚本执行,然后点击“语句编号”立刻查看,看完以后可以随时让脚本从中断处恢复执行。执行热键: ScrollLock暂停热键:Pause停止热键:ScrollLock 图: 抓点界面抓点功能简介:用户可以抓取20个坐标点以及相应坐标点的颜色。抓点热键包括数字键0到9,以及数字键下方的10个字母键Q到P。按下热键即可获得鼠标当前所在位置的坐标和颜色,以备制作脚本时使用。偏移抓点:当使用偏移抓点时,实际抓到的是鼠标附近的一点的坐标和颜色(具体抓到的点用一个“瞄准镜”表示)。这样可以解决在某些情况下,鼠标图标颜色会挡住真实坐标颜色的问题。按键精灵动作介绍 按键精灵的所有动作都需要在“动作选择区”中选定,然后插入“脚本内容区”。按键精灵的所有功能也都集中在动作选择区中。按键精灵提供了丰富的动作供大家选择,这些动作分为四个大类。分别介绍如下键盘动作:按键动作:模拟键盘按下、弹起以及按键的动作。可以区分按下状态和弹起状态,也就是可以模拟按住一个键不放的动作按键组合:模拟按下组合键的情况鼠标动作:鼠标点击动作:共有7种点击类型供你选择,单击或者双击,左键或者右键,等等。抓点动作:点击“抓点”出现抓点界面,内置20个抓点热键可以抓取20个坐标点,足以满足大部分人的需要鼠标移动动作:将鼠标移动到屏幕上某个预定的坐标点鼠标相对移动:将鼠标相对当前位置进行移动保存/恢复鼠标位置:保存当前鼠标位置、恢复鼠标位置到最后一次保存的位置控制动作:颜色控制动作:如果某一点的颜色符合条件,就执行后面的语句,颜色可以在“抓点”窗口中抓取循环动作:将脚本反复执行跳转动作: 在脚本的某个位置先设置一个“标记”,然后就可以在这里选择直接跳转到“标记”处子程序调用:制作脚本子程序,可以随时调用停止脚本运行:停止脚本运行功能其它动作:延时:可以让脚本停顿一段时间再继续执行输入文本:输入一串文本,支持中文输入注释/标记:你可以给自己的语句加以注释,同时这些注释也可以用来作为“跳转语句”中的“标记”弹出窗口:弹出窗口显示窗口提示内容,可以暂停脚本的运行按键精灵脚本编程语句 1.转移语句:Goto 格式:Goto [标记] 解释:跳转到标记的位置 2.注释或标记语句:Rem 格式:Rem [注释或标记]解释:可以当作标记供跳转语句使用,也可以当作脚本的注释使用3.条件语句:IfColor ... EndIf 条件正 格式: IfColor x y color 0(x、y为桌面横坐标和纵坐标,color为颜色RGB码) [语句块] EndIf 解释:如果坐标点(x,y)的颜色等于color的数值,则执行语句块中的内容条件反 格式: IfColor x y color 1 [语句块] EndIf 解释:如果坐标点(x,y)的颜色不等于color的数值,则执行语句块中的内容4.循环语句:For ... EndFor 格式: For [循环次数] [语句块] EndFor 解释:将语句块反复执行数次,执行次数由“循环次数”控制5.延时语句:Delay 格式:Delay [毫秒] 解释:等待一些时间再执行下一句脚本。6.光标移动语句:MoveTo、MoveR 格式: 绝对移动:MoveTo x y 解释:移动鼠标到(x,y)点相对移动:MoveR dx dy(dx、dy为正时表示正方向移动,为负即为负方向移动) 解释:相对当前坐标横向移动鼠标x,纵向移动鼠标y7.鼠标控制语句:LeftClick、RightClick、LeftDoubleClick、LeftDown、LeftUp、RightDown、RightUp 格式: 左键单击:LeftClick 1 右键单击:RightClick 1 左键双击:LeftDoubleClick 1 左键按下:LeftDown 1 左键弹起:LeftUp 1 右键按下:RightDown 1 右键弹起:RightUp 1 8.键盘按键语句:KeyPress、KeyDown、KeyUp 格式: 按键:KeyPress code 1(code为键盘 ASCII码) 按住:KeyDown code 1 弹起:KeyUp code 1 9.输入字符串语句:SayString 格式:SayString [要输入的字符串] 10.保存/恢复鼠标位置格式:保存鼠标位置:SaveMousePos 解释:保存当前鼠标位置 恢复鼠标位置:RestoreMousePos解释:将鼠标移动到上一次保存的鼠标位置这两个语句常用于制作网络游戏练功脚本,脚本开始时保存鼠标位置,脚本结束时恢复鼠标位置。11.子程序、子程序调用格式:Sub [子程序名][语句块] Retrun解释:将一些语句放在子程序中,可以被反复调用Gosub [子程序名]解释:调用子程序中的语句块11.脚本停止运行格式:EndScript解释:完全停止当前脚本的运行。可以用于调试脚本。 12.弹出窗口格式:MessageBox [窗口显示内容]解释:弹出一个窗口,显示设置的内容,用户点击“确定” 方可继续运行脚本,可以用于暂停脚本的运行下载的话直接去BAIDU搜索就可以
请登录后再发表评论!qlwmc 的BLOG
用户名:qlwmc
文章数:22
访问量:24866
注册日期:
阅读量:2471
阅读量:1372
阅读量:1722
51CTO推荐博文
在SQL Server 2000里设置和使用数据库复制之前,应先检查相关的几台SQL Server服务器下面几点是否满足:
&&& 1、MSSQLserver和Sqlserveragent服务是否是以域用户身份启动并运行的(.\administrator用户也是可以的)
&&&&&&& 如果登录用的是本地系统帐户local,将不具备网络功能,会产生以下错误:
&&&&&&& 进程未能连接到Distributor
&&&&& (如果您的服务器已经用了SQL Server全文检索服务, 请不要修改MSSQLserver和Sqlserveragent服务的local启动。
&&&&&& 会照成全文检索服务不能用。请换另外一台机器来做SQL Server 2000里复制中的分发服务器。)&&&
&&&&& 修改服务启动的登录用户,需要重新启动MSSQLserver和Sqlserveragent服务才能生效。&&&
&&& 2、检查相关的几台SQL Server服务器是否改过名称(需要srvid=0的本地机器上srvname和datasource一样)
&&&&&& 在查询分析器里执行:
&&&&&&&& use master
&&&&&&&& select srvid,srvname,datasource from sysservers&&&
&&&&&& 如果没有srvid=0或者srvid=0(也就是本机器)但srvname和datasource不一样, 需要按如下方法修改:
&&&&&&&& USE master
&&&&&&& GO
&&&&&&& -- 设置两个变量
&&&&&&& DECLARE @serverproperty_servername& varchar(100),
&&&&&&&&&&&&&&& @servername&&& varchar(100)
&&&&&&& -- 取得Windows NT 服务器和与指定的 SQL Server 实例关联的实例信息
&&&&&&& SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
&&&&&&& -- 返回运行 Microsoft SQL Server 的本地服务器名称
&&&&&&& SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
&&&&&&& -- 显示获取的这两个参数
&&&&&&& select @serverproperty_servername,@servername
&&&&&&& --如果@serverproperty_servername和@servername不同(因为你改过计算机名字),再运行下面的
&&&&&&& --删除错误的服务器名
&&&&&&& EXEC sp_dropserver @server=@servername
&&&&&&& --添加正确的服务器名
&&&&&&& EXEC sp_addserver @server=@serverproperty_servername, @local='local'
&&&&&& 修改这项参数,需要重新启动MSSQLserver和Sqlserveragent服务才能生效。&&&
&&&&&& 这样一来就不会在创建复制的过程中出现1错误了。
&&& 3、检查SQL Server企业管理器里面相关的几台SQL Server注册名是否和上面第二点里介绍的srvname一样
&&&&&&& 不能用IP地址的注册名。
&&&&& (我们可以删掉IP地址的注册,新建以SQL Server管理员级别的用户注册的服务器名)
&&&&&& 这样一来就不会在创建复制的过程中出现1、1、18483错误了。&&&
&&& 4、检查相关的几台SQL Server服务器网络是否能够正常访问
&&&&&&& 如果ping主机IP地址可以,但ping主机名不通的时候,需要在&&&
&&&&&&&&&&& winnt\system32\drivers\etc\hosts&& (WIN2000)
&&&&&&&&&&& windows\system32\drivers\etc\hosts (WIN2003)
&&&&&&&&&&&
&&&&&&&&&&&&&& 文件里写入数据库服务器IP地址和主机名的对应关系。
&&&&&&&&&&&&&&
&&&&&&&&&& 例如:&&&
&&&&&&&&&&&&&&
&&&&&&&&&& 127.0.0.1&&&&&& localhost
&&&&&&&&&& 192.168.0.35&&& oracledb&&& oracledb
&&&&&&&&&& 192.168.0.65&&& fengyu02&&& fengyu02
&&&&&&&&&& 202.84.10.193&& bj_db&&&&&& bj_db&&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&&& 或者在SQL Server客户端网络实用工具里建立别名,例如:&&&&&&&&&&&&
&&&&&&&&&&&
&&&&& 5、系统需要的扩展存储过程是否存在(如果不存在,需要恢复):
&&&&&&&& sp_addextendedproc 'xp_regenumvalues',@dllname ='xpstar.dll'
&&&&&&&& go
&&&&&&&& sp_addextendedproc 'xp_regdeletevalue',@dllname ='xpstar.dll'
&&&&&&&& go
&&&&&&&& sp_addextendedproc 'xp_regdeletekey',@dllname ='xpstar.dll'
&&&&&&&& go&&&&&&&&&&&&&
&&&&&&&& sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'&
&&& 接下来就可以用SQL Server企业管理器里[复制]-& 右键选择
&&&&&&& -&[配置发布、订阅服务器和分发]的图形界面来配置数据库复制了。
&&& 下面是按顺序列出配置复制的步骤:
&&& 一、建立发布和分发服务器
&&&&&&& [欢迎使用配置发布和分发向导]-&[选择分发服务器]
&&&&&& -&[使&@servername&成为它自己的分发服务器,SQL Server将创建分发数据库和日志]
&&&&&& -&[制定快照文件夹]-& [自定义配置] -& [否,使用下列的默认配置] -& [完成]
&&& 上述步骤完成后, 会在当前&@servername& SQL Server数据库里建立了一个distribion库和
&&&&&&&&&&& 一个distributor_admin管理员级别的用户(我们可以任意修改密码)
&&&&&&&&&&&
&&& 服务器上新增加了四个作业:
&&&&&&&&&&&&&&& [ 代理程序历史记录清除: distribution ]
&&&&&&&&&&&&&&& [ 分发清除: distribution ]
&&&&&&&&&&&&&&& [ 复制代理程序检查 ]
&&&&&&&&&&&&&&& [ 重新初始化存在数据验证失败的订阅 ]
&&& SQL Server企业管理器里多了一个复制监视器, 当前的这台机器就可以发布、分发、订阅了。
&&& 我们再次在SQL Server企业管理器里[复制]-& 右键选择
&&&&&&& -&[配置发布、订阅服务器和分发],可以看到类似下图:&
&&& 我们可以在 [发布服务器和分发服务器的属性] 窗口
&&&&&&& -& [发布服务器] -& [新增]&&&&&&& -& [确定]
&&&&&&& -& [发布数据库] -& [事务]/[合并] -& [确定]
&&&&&&& -& [订阅服务器] -& [新增]&&&&&&& -& [确定]
&&&&&& 把网络上的其它SQL Server服务器添加成为发布或者订阅服务器.
&&&&&& 新增一台发布服务器的选项:&&&&&&&&
&&& 我这里新建立的JIN001发布服务器是用管理员级别的数据库用户test连接的,
&&& 到发布服务器的管理链接要输入密码的可选框, 默认的是选中的,
&&& 在新建的JIN001发布服务器上建立和分发服务器FENGYU/FENGYU的链接的时需要输入distributor_admin用户的密码
&&&&&&&& 到发布服务器的管理链接要输入密码的可选框,也可以不选,
&&&&&&&& 也就是不需要密码来建立发布到分发服务器的链接(这当然欠缺安全,在测试环境下可以使用)
&&&&&& 新增一台订阅服务器的选项:&&&&
&&& 二、新建立的网络上另一台发布服务器(例如JIN001)选择分发服务器
&&& [欢迎使用配置发布和分发向导]-&[选择分发服务器]
&&&& -& 使用下列服务器(选定的服务器必须已配置为分发服务器) -& [选定服务器](例如FENGYU/FENGYU)
&&&& -& [下一步] -& [输入分发服务器(例如FENGYU/FENGYU)的distributor_admin用户的密码两次]
&&&& -& [下一步] -& [自定义配置] -& [否,使用下列的默认配置]
&&&& -& [下一步] -& [完成] -& [确定]
&&&& 建立一个数据库复制发布的过程:
&&&& [复制] -& [发布内容] -& 右键选择 -& [新建发布]
&&&& -& [下一步] -& [选择发布数据库] -& [选中一个待发布的数据库]
&&&&&&&&&&&
&&&& -& [下一步] -& [选择发布类型] -& [事务发布]/[合并发布]
&&&& -& [下一步] -& [指定订阅服务器的类型] -& [运行SQL Server 2000的服务器]
&&&& -& [下一步] -& [指定项目] -& [在事务发布中只可以发布带主键的表] -& [选中一个有主键的待发布的表]
&&&&&&&& -&[在合并发布中会给表增加唯一性索引和 ROWGUIDCOL 属性的唯一标识符字段[rowguid],默认值是newid()]
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&& (添加新列将: 导致不带列列表的 INSERT 语句失败,增加表的大小,增加生成第一个快照所要求的时间)
&&&&&&&&&&&&&&
&&&&&&&& -&[选中一个待发布的表]
&&&& -& [下一步] -& [选择发布名称和描述] -&
&&&& -& [下一步] -& [自定义发布的属性] -& [否,根据指定方式创建发布]
&&&& -& [下一步] -& [完成] -& [关闭]
&&&& 发布属性里有很多有用的选项:设定订阅到期(例如24小时)&
&&&& 设定发布表的项目属性:
&&&& 常规窗口可以指定发布目的表的名称,可以跟原来的表名称不一样。
&&&& 下图是命令和快照窗口的栏目&
&&& ( SQL Server 数据库复制技术实际上是用insert,update,delete操作在订阅服务器上重做发布服务器上的事务操作
&&&&& 看文档资料需要把发布数据库设成完全恢复模式,事务才不会丢失
&&&&& 但我自己在测试中发现发布数据库是简单恢复模式下,每10秒生成一些大事务,10分钟后再收缩数据库日志,
&&&&&&&&& 这期间发布和订阅服务器上的作业都暂停,暂停恢复后并没有丢失任何事务更改 )
&&&& 发布表可以做数据筛选,例如只选择表里面的部分列:
&&例如只选择表里某些符合条件的记录, 我们可以手工编写筛选的SQL语句:
&&& 发布表的订阅选项,并可以建立强制订阅:&&&&
& 成功建立了发布以后,发布服务器上新增加了一个作业: [ 失效订阅清除 ]
&&& 分发服务器上新增加了两个作业:
&&&&&&&&&&&&&&& [ JIN001-dack-dack-5 ] 类型[ REPL快照 ]
&&&&&&&&&&&&&&& [ JIN001-dack-3 ]&&&&& 类型[ REPL日志读取器 ]
&&&&&&&& 上面蓝色字的名称会根据发布服务器名,发布名及第几次发布而使用不同的编号
&&&&&&&&&&&
REPL快照作业是SQL Server复制的前提条件,它会先把发布的表结构,数据,索引,约束等生成到发布服务器的OS目录下文件
&&& (当有订阅的时候才会生成, 当订阅请求初始化或者按照某个时间表调度生成)
REPL日志读取器在事务复制的时候是一直处于运行状态。(在合并复制的时候可以根据调度的时间表来运行)
&&&&& 建立一个数据库复制订阅的过程:&
&&&& [复制] -& [订阅] -& 右键选择 -& [新建请求订阅]
&&&& -& [下一步] -& [查找发布] -& [查看已注册服务器所做的发布]
&&&&&&&&&&&
&&&& -& [下一步] -& [选择发布] -& [选中已经建立发布服务器上的数据库发布名]&&&&&
&&&& -& [下一步] -& [指定同步代理程序登录] -& [当代理程序连接到代理服务器时:使用SQL Server身份验证]
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& (输入发布服务器上distributor_admin用户名和密码)&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&& -& [下一步] -& [选择目的数据库] -& [选择在其中创建订阅的数据库名]/[也可以新建一个库名]&&
&&&& -& [下一步] -& [允许匿名订阅] -& [是,生成匿名订阅]&&&&&
&&&& -& [下一步] -& [初始化订阅] -& [是,初始化架构和数据]&&&&&
&&&& -& [下一步] -& [快照传送] -& [使用该发布的默认快照文件夹中的快照文件]
&&&&&&&&&&&&&&&&&&& (订阅服务器要能访问发布服务器的REPLDATA文件夹,如果有问题,可以手工设置网络共享及共享权限)&&&&&
&&&& -& [下一步] -& [快照传送] -& [使用该发布的默认快照文件夹中的快照文件]&&&&&
&&&& -& [下一步] -& [设置分发代理程序调度] -& [使用下列调度] -& [更改] -& [例如每五分钟调度一次]&&&&&
&&&& -& [下一步] -& [启动要求的服务] -& [该订阅要求在发布服务器上运行SQLServerAgent服务]&&&&&
&&&& -& [下一步] -& [完成] -& [确定]&&&&&
&&& 成功建立了订阅后,订阅服务器上新增加了一个类别是[REPL-分发]作业(合并复制的时候类别是[REPL-合并])
&&& 它会按照我们给的时间调度表运行数据库同步复制的作业
&&& 查看它的历史记录运行情况,例图:
&&& 在分发服务器的[复制监视器]-&[发布服务器]-&[发布名称]-&[日志读取器]-&右键选择-&[代理程序历史记录], 例图:
&&& 三、SQL Server复制配置好后, 可能出现异常情况的实验日志:
&&& 1.发布服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制没有多大影响
&&&&&&& 中断期间,分发和订阅都接收到没有复制的事务信息
&&& 2.分发服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制有一些影响
&&&&&&& 中断期间,发布服务器的事务排队堆积起来
&&&&&&&&&& (如果设置了较长时间才删除过期订阅的选项, 繁忙发布数据库的事务日志可能会较快速膨胀),
&&&&&&& 订阅服务器会因为访问不到发布服务器,反复重试
&&&&&&&&&&& 我们可以设置重试次数和重试的时间间隔(最大的重试次数是9999, 如果每分钟重试一次,可以支持约6.9天不出错)
&&&&&&& 分发服务器sql server服务启动,网络接通以后,发布服务器上的堆积作业将按时间顺序作用到订阅机器上:
&&&&&&& 会需要一个比较长的时间(实际上是生成所有事务的insert,update,delete语句,在订阅服务器上去执行)
&&&&&&& 我们在普通的PC机上实验的58个事务100228个命令执行花了7分28秒.
&&& 3.订阅服务器断网,sql server服务关闭,重启动,关机的时候,对已经设置好的复制影响比较大,可能需要重新初始化
&&&&&&& 我们实验环境(订阅服务器)从18:46分意外停机以, 第二天8:40分重启动后,
&&&&&&&&&&& 已经设好的复制在8:40分以后又开始正常运行了, 发布服务器上的堆积作业将按时间顺序作用到订阅机器上
&&&&&&&&&&& 但复制管理器里出现快照的错误提示, 快照可能需要重新初试化,复制可能需要重新启动.
&&&&&&&&&&& (我们实验环境的机器并没有进行快照初试化,复制仍然是成功运行的)
&&& 四、删除已经建好的发布和定阅可以直接用delete删除按钮
&&& 我们最好总是按先删定阅,再删发布,最后禁用发布的顺序来操作。
&&& 如果要彻底删去SQL Server上面的复制设置, 可以这样操作:
&&& [复制] -& 右键选择 [禁用发布] -& [欢迎使用禁用发布和分发向导]
&&&& -& [下一步] -& [禁用发布] -& [要在&@servername&上禁用发布]
&&&&&&&&&&&
&&&& -& [下一步] -& [完成禁用发布和分发向导] -& [完成]
&& 我们也可以用T-SQL命令来完成复制中发布及订阅的创建和删除, 选中已经设好的发布和订阅, 按属标右键
&& 可以[生成SQL脚本]。(这里就不详细讲了, 后面推荐的网站内有比较详细的内容)
&& 当你试图删除或者变更一个table时,出现以下错误
&& Server: Msg 3724, Level 16, State 2, Line 1
&& Cannot drop the table 'object_name' because it is being used for replication.
&& 比较典型的情况是该table曾经用于复制,但是后来又删除了复制
&& 处理办法:
&& select * from sysobjects where replinfo &'0'
&& sp_con**ure 'allow updates', 1
&& recon**ure with override
&& begin transaction
&& update sysobjects set replinfo = '0' where replinfo &'0'
&& commit transaction
&& rollback transaction
&& sp_con**ure 'allow updates', 0
&& recon**ure with override
--------------------------------------------------------------------------------
转载链接:
了这篇文章
附件下载:  
类别:┆阅读(0)┆评论(0)
请输入验证码:Powered by
& 2013 &&&求一个程序或方法:可以发一个文本给别人看一次或打开一次,就自动删除或文字消失~,俗称:一次性文件!_百度知道
求一个程序或方法:可以发一个文本给别人看一次或打开一次,就自动删除或文字消失~,俗称:一次性文件!
是我写的不清楚还是有人没看清楚?怎么发个重装系统的答案出来呢?
提问者采纳
你找到了吗?
没找到,郁闷中~
提问者评价
其他类似问题
为您推荐:
其他1条回答
重装系统方法:
首先,确定你的光驱是第一启动顺序并支持从光驱启动。
要从光盘安装,要把BIOS进行设置,使系统能够从光盘启动。其方法如下:
(1)启动计算机,当屏幕上显示 Press Del to Enter BIOS Setup提示信息时,按下键盘上的Del键,进放主板BIOS设置界面。
(2)选择 Advanced BIOS Features 选项,按Enter键进入设置程序。选择First Boot Device 选项,然后按键盘上的Page Up或Page Down 键将该项设置为CD-ROM,这样就可以把系统改为光盘启动。
(3)退回到主菜单,保存BIOS设置。(保存方法是:按下F10,然后再按Y键即可)
(4)然后将光盘放入光驱,并重启电脑,系统便会从光盘进行引导,并显示安装向导界面,你可以根据提示一步步进行安装设置就OK了。
在Windows XP拷贝...
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁本篇主要是上一篇文章的补充篇,上一篇我们介绍了,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程,并且根据加载过程中所遇到的一系列问题提供解决方案。
其实SQL Server作为微软的一款优秀RDBMS,它启动的过程中,本身所带的那些系统库发生问题的情况相对还是很少的,我们在平常使用中,出问题的大部分集中于我们自己建立的用户数据库。
而且,相对于侧重面而言,其实我们更关注的是我们自己建立的用户数据库,假如系统数据库出现问题,甚至实例出现问题,最坏的情况我们重搭环境,但是如果我们应用的用户数据库坏掉了,那可不是重搭环境就能解决的。这牵扯到公司利益问题,问题严重性不言而喻!
闲言少叙,我们速度进入本篇的正题。
上一篇我们介绍了SQL Server实例启动的过程,并且分析了其详细的过程,而在这一流程中,有一个步骤非常关键,就是加载恢复用户数据库的过程,我们来截取这段日志信息:
上面是一个正常启动各个用户库的流程,SQL Server会采用多线程的进行数据库启动,并且在这个过程中进行一致性校验,确保启动的数据库能够正常使用。
而这过程中会发生很多问题,在分析问题之前,我先要介绍SQL Server数据库的几个常见状态:
&RECOVERING(恢复中):
这个状态表示数据在启动完成后,正在发生恢复,也就是上面日志中的 Recovery过程,和其它的关系型数据库一样,SQL Server对所有的数据库行为都是先写事务日志,然后在修改内存中的数据,然后通过后台的一个进程在适当的时候进行写入硬盘(Lazy write),所以在数据库运行过程中,磁盘中的数据并不是最新的,如果这个时候关闭了,在下一次启动过程中SQL Server就要根据事务日志中的记录,将磁盘中的旧的数据改写,改写过程为:
1、重做redo
2、回滚和撤销 undo/rollback
上面的目的就是为了保证数据库一致性。
如果上面的流程发生了问题,就会进去到下面这个状态:
RECOVERY PENDING(挂起还原):
这个过程就是将恢复数据的过程挂起,挂起的原因基本就是不能正常打开所用的数据库文件。这里先记住这个状态就行,我在后面的内容会再现这个问题,以及给出解决方案。
如果能找到文件或者能打开文件,但是文件有问题,机会出现下面这个状态:
SUSPECT(质疑):
这个状态,我相信很多用户如果在玩数据库久了的时候,会偶尔遇到,相对于其它状态,这个状态是出现最高的。
原因很简单:数据库文件坏掉了。
当经历了上面的这个几个状态都不出现问题,上面的这几个状态下,数据库都是不能使用的,会进入到下面这个状态:
ONLINE(在线):
这个状态应该是最期待的了,数据库在线,正常使用,默认都是正常的在线状态。
当然,除了上面几个数据库自己形成的数据库状态,在我们管理员处理数据库的时候也会更改状态,这里我们顺便提一下:
OFFLINE(离线):有在线状态就有离线状态,很简单,让数据库离线,用户不能使用
RESTORING(还原中):这个状态很简单,管理员正在还原该数据库,不解释
EMERGENCY(紧急):这个状态也是管理员用的,就是说明数据库有问题了,它正在尽量解决
以上几个状态中,发生在启动过程中,并且会发生问题就是上面的RECOVERY PENDING(挂起还原)、SUSPECT(质疑)、RECOVERING(恢复中):
我们依次来看:
RECOVERY PENDING(挂起还原):
出现这个状态通常的原因是数据库文件找不到,或者文件找到权限访问不到,我们来看该问题报错信息:
在数据库中存储方式中,分为主文件组和辅助文件组和日志文件,为了展示方便我们特意建立了个测试库,来重现该部分问题:
&1&主文件组问题
当不能访问主文件组文件的时候,也就是上面的CnblogsTestDB.mdf文件,会报如下错误:
我们先来看数据库:
在实例启动的过程,恰巧有一个库显示了上面我们提到的一个状态:RECOVERING(恢复中),我顺便把图给截图了,当然出现这个情况很正常,有时候刷新一下就正常,其它用户库没有显示是因为库太小,恢复时间太短,我们捕捉不到。
我们来看,上面我们建立的测试库CnblogsTestDB已经不能访问了,我们来看一下Error中的错误信息:
错误信息很明显,说这个该文件不能访问,并且确切的说出了这个为操作系统错误,那我们看操作系统的错误记录:
可以看到在Windows系统日志中也能看到该部分错误信息。
解决方案:
此问题的解决方法还是很简单的,一般主要是因为权限问题,只需要将数据库管理员账户组,提权到可读写权限就可以,然后重启服务:
上面的情况是找到数据库文件,但是不能打开数据库文件,当然还有可能是直接找不到数据库文件,系统会报出如下错误:
会给出17204错误,报找不到文件错误
解决方案:
a、如果能找到数据文件最好了,拷贝到错误制定的路径下既可以,然后重启实例
b、不能找到文件了,那就得只能删除该库,重新新建同名库,从备份文件中还原
一般上述问题发生在物理存储出现了故障,当然不排除某些软件操作,比如杀毒软件、还有人为误删等原因。如果没有备份,这可能是一个很大的遭难,基本可以确定的完全还原的可能性不高!所以记住:备份数据库的重要性!
&2&辅助文件组问题
上面的出现问题的文件为数据库的主文件组,当我们数据库在承载到一定数据量的情况下,我么采取多个辅助文件组来容纳数据,下面我们来看一下辅助文件组的问题:
同样的提示的辅助文件组不能正常打开,或者找不到相关的辅助文件组,遇到这样的问题我们怎么解决呢?
其实SQL Server数据库辅助文件存储的主要为数据库的数据内容信息,关于本库的一些架构信息是放在主(primary)文件组中,所以我们可以先这样
解决方案:
a、我们将打不开或者不能访问的数据库文件(辅助文件)设置成离线,然后先将能够正常的数据文件上线,确保除了损坏的那部分文件的其它库信息能正常访问,我们通过以下代码更改:
ALTER DATABASE CnblogsTestDB MODIFY FILE(NAME=CnblogsTestDB2,OFFLINE)GOALTER DATABASE CnblogsTestDB set ONLINEGO
这样,我们刷新下数据库,既可以正常访问正确的数据信息:
当我们处于生产环境中,生产库不能正常启动的时候,此刻的火烧眉毛的时刻,采取上面的方法先确保一部分数据能正常访问也不失为一种缓议之计。
下面的步骤就是找到该辅助文件,并且确保有正常的权限访问,更重要的是找到的辅助文件不能是损坏的,然后拷贝至错误文件中给出的路径,然后重启实例,上线该库。
b、当然大部分情况下,我们找不到该文件,或者这个文件已经损坏,那就得采取第二种方案,通过备份还原,根据以往的经验,建议采取的措施是:
先将能访问的数据库做一次备份,然后通过文件组恢复的方式,恢复上面出问题的文件组。
&3&日志文件组
其实从市面上的所有数据库而言,其本身所有的机制都是通过先写日志,然后通过一个进程后写入(lazy write)方式写入到磁盘,这种方式是为了避免IO的阻塞,因为我们都知道磁盘IO这个问题一直是所有文件读写的最大瓶颈。
所以,日志文件是数据库不可分割的一部分。当数据库在启动的过程,会通过日志中的记录做一次数据的一致性校验,文章的开端有介绍。
所以说,如果日志文件不能访问,或者说出问题,那我们的SQL Server数据库会出现什么问题呢?
我们先来看数据库模式为简单(SIMPLE)模式的,我将咱们的测试库设置成简单模式:
USE CnblogsTestDB
ALTER DATABASE [CnblogsTestDB] SET RECOVERY SIMPLE WITH NO_WAIT
然后我们停掉实例,然后删除掉该库的日志文件,然后重新启动
可以看到处于简单模式下,如果日志文件出现错误,在启动的过程是不会发生任何问题的,这里的原因我们在启动Error日志文件中能找到答案:
经过上面的日志分析,我们可以看到,当数据库处于简单模式下,数据库在启动的过程中,如果发现任何与日志相关的信息,则会重新创建一份日志文件,保证数据库的正常访问。
如果这样那我们数据库的完整性怎么保证呢,是这样,如果数据库处于简单模式,在我们数据库关闭的时候,系统会先将该提交的所有事务都写入到磁盘中去,所有该回滚的就撤销。
上面能正常创建数据库日志文件的前提条件有两条:1、数据库为简单模式;2、数据库正常关闭,保证事务都已正常写入磁盘
下面我们在看看如果恢复模式为&完整&模式下的,数据库上次没有正常的情况,SQL Server数据库是如何处理的,
我们先将数据库改成完整恢复模式,停掉实例,然后删除日志,然后启动
然后我们启动,可以看到这个时候,数据库不能正常访问的,该错误的Error的日志信息为:
windows平台下也为我们记录了该错误的日志信息:
其实出现上面的错误,很正常,因为有些数据库的事务性操作已经记录到事务日志中,还未写入磁盘数据页中,这时候发生了宕机,或者非正常关闭,这个对SQL Server数据库是能应付的,但是,而在启动的过程找不到相关的事务日志尽心回滚和写入操作,所以该库的数据时非一致性的,所以SQL Server是不让我们使用该库,出现此种错误,我们的解决方式有如下几种:
解决方案:
a、如果有备份,最好最快的方式就是恢复数据库备份或者找到了该日志文件拷贝到错误路径下(推荐)
b、如果没有备份,我们只能通过使用CHECKDB命令修复数据库(不推荐)
上述解决方案中CHECKDB命令,是一种万不得已的方式,而且,我可以明确的告诉你这命令使用的时候会可能造成数据丢失,并且在大数据库中,运行周期很长!
当然在万不得已的情况下,我们还的采取,过程如下:
我们先将数据库设置成EMERGENCY(紧急)模式,并且为单用户(SINGLE_USER)模式
USE CnblogsTestDB
ALTER DATABASE CnblogsTestDB SET EMERGENCY
ALTER DATABASE CnblogsTestDB SET SINGLE_USER
经过我们上面的设置,将库设置成了&紧急&模式,并且只为单用户方式访问,便于我们进行数据修复
然后我们执行CHECKDB命令,进行数据库的修复
DBCC CHECKDB(CnblogsTestDB,REPAIR_ALLOW_DATA_LOSS)
经过该命令的修复,数据库会为系统新建一个日志,但是不能保证事务的一致性,也就是说会因此而丢失数据,所以非常不推荐的一种方式!
并且,在这过程中,如果是大数据库的话,该修复过程会很漫长,当然我不能给出一个漫长参考值,因为这过程还有会出现其它的错误需要修复。
所以酌情考量。
当然,在恢复完成之后,不要忘记将数据库改回多用户模式
USE [master]
ALTER DATABASE [CnblogsTestDB] SET
MULTI_USER WITH ROLLBACK IMMEDIATE
至此,这个有问题的库就能够正常访问了。
----------------------------------------------------------霸气的分割线-----------------------------------------------------------------------
在经历了上面的文件级别错误后,在数据库启动的过程,还经常出现的是数据页级别的错误,相对于上面的文件错误级别,在数据页中造成的错误粒度更小,并且基本不会反映到数据库级别,也就是说在出现数据页级别的错误时候,该数据时可以正常访问的,只是在访问有错误的数据页的时候才会报错,在我们遇到这种错误的时候该如何解决呢?
下面我们依次来分析,首先我们来制作一个经典的824错误,以下部分内容牵扯到数据库部分基础,限于篇幅,我们不做详细介绍:
&1&首先我们在我们的测试库中新建一个表,我们将该表新建成一行为一个数据页的方式,也就是说一行数据库在数据库中就能承载一个数据页
USE CnblogsTestDB
CREATE TABLE [dbo].[TestPage]
[a] [int] NULL,
[b] [nvarchar](3900) NULL
) ON [PRIMARY]
脚本很简单,一张表,两列,一列int类型,一列nvarchar(3900),一行数据的存储空间为:3900*2(nvarchar(3900))字节+4(int)+96字节(页头)+36字节(行偏移)=7932字节,我们知道一个数据页存储的信息为8K=8192字节,包括其它消耗所以该表一行数据如果填充完,一行数据将近乎占据一个数据页。
我们来添加三行数据,然后查看页信息:
--插入三条数据
insert [TestPage]
values(1,REPLICATE('A',3900))
insert [TestPage]
values(2,REPLICATE('B',3900))
insert [TestPage]
values(3,REPLICATE('C',3900))
--查看页信息
traceon(3604)
--查看库中页集合
dbcc extentinfo(CnblogsTestDB,[TestPage])
可以看到,该表中现在有三个数据页,我们来看看数据页应该也是近乎沾满的
&上图显示了,通过扫描表信息,共含有3个数据页,每个数据页中的数据量存储占比到了96.55%,也就是说基本上是填充满了。
&当然,我们还可以通过DBCC PAGE命令,来查看每个页中的具体内容,我们简单的看一个页面编号为90的数据页:
通过上面的命令可以看到,该数据页中存储的为表中的第一行的数据,并且在数据库存储文件中是以十六进制方式编码存储。
当然,如果感觉此方式不直观,可以利用一个小工具进行数据页的查看,这里我推荐使用Internal Views(此工具在的博文中有详细介绍),可更直观的展示数据存储页信息:
这里我们可以点击我上面上面查看的第一行的数据内容页进行查看
经过上面的分析步骤,其实我的目的是想重现在SQL Server启动过程中,或者在线上的数据库经常遇到的经典错误824错误
上述过程是原理篇,因为我们必须知道数据存储的底层原理,才能理解好这个错误的原因,以及找到正确的处理方法。
下一步,我们来重现这个错误的原因,我们知道在我新建的测试表中含有两个字段:a和b,并且a为int类型、b为nvarchar类型
然后我们介绍了底层的存储机制,我现在将第一列a字段的整形数据内容存储改成字符串类型,依次来损坏掉该数据页内容
我先将服务停掉,然后用文件编辑工具,修改此数据页内容,该数据页内容为十六进制内容,当然在我搞坏这部分数据页之前我先做一个完整备份
然后修改该数据页信息,这里我使用UltraEdit文本编辑工具,打开文件,找到该数据页内容
我们将上面的源数据更该一下,来把这个数据页损坏掉
&我们保存,然后重新启动该数据库看看
&这就是我们平常比较常见的824错误的过程,而此过程有可能是磁盘坏道造成,或者误修改文件等诸多原因,但是此问题还是比较常见的
当然,这种数据页面的损坏可能造成的影响不是库级别的,也就说不会造成数据库不能访问,其它表是能正常访问的,但是只是在操作此损坏的数据页的时候才会报错,但有时候这几个数据页的损坏对业务产生的影响有可能就是致命的,所以我们要解决掉。
郑重提示:上面过程也可以正确的更改数据页中的数据,但是如果没有确切的把握,基本上能把数据库搞瘫痪掉,我是为了重现问题才修改底层元数据,所以在自己的生产库中千万不要乱搞!
在数据库启动的过程中,会发生一致性校验,所以该错误应该会记录到Error的错误日志文件中,我们来看:
windows平台下的错误日志:
当然,在启动的过程中该问题有可能发生很多,比如磁盘坏道等原因,一系列的数据页可能就没法访问了。所以SQL Server会将这些损坏的页面记录到msdb系统库中,这我们在这个库中查找到损坏的页面集合:
至此,我们已经重现了经典的824错误,那我们该如何解决此问题呢?&
解决方法:
a、如果此问题出现的页面为数据承载页,也就说该页存储的为内容数据或者为聚集索引的叶子节点数据,并且存在镜像,版本在SQL Server2005以上,那么这个错误基本可以忽略,SQL Server能够自动帮你修复此错误。
b、如果此问题出现在没有镜像的环境中,那就要区分是损坏页面是否为聚集索引叶子节点数据,如果是,那就简单了,直接重建索引就好了,如果不是,那此种方案还是不能解决,判断方法如下:
利用DBCC PAGE命令查看当前数据页内容,根据ObjectId跟踪该页位于哪个对象上,Metdata:IndexID的值判断是否为索引树中的节点值,如果大于0则表示为索引值,此时,重建该索引既可以。比如:
我们根据该页的ObjectID,从数据库中查找该页所属对象。
&c、如果上述方案都不能满足,那只有采取此种方案,我们可以利用数据库备份进行还原,当然为了最大限度的避免数据库离线,我们最好采取数据页还原的方式,此种方式最为简单,还原速度也最快,能够最大限度的缩短数据库离线时间,并且保证数据完整性。
这里提示下:在SQL Server2012版本一下,SSMS不提供图像化数据页还原方式,在SQL Sever以后的版本中,有图像化界面操作。
所以,我们只能通过如下脚本进行还原:
RESTORE DATABASE CnblogsTestDB
PAGE='1:90'
FROM DISK = N'F:\SQLTest\CnlogsTestDB.bak'
WITH NORECOVERY
当然有事务日志、更新备份的,需要依次恢复这过程的所有的备份,不要忘记备份尾部日志。
但是此方法也有局限性:
如果损坏的数据页为
& 1、分配页:GAM、SGAM和PFS页
&&2、所有数据文件的启动页
如果发生损坏的是以上两种,则无法通过该备份恢复页方式进行恢复。如果这种情况下,建议考虑找合适的时间段进行全库的恢复操作。(推荐)
d、上述情况是在存在有备份的情况下,如果没有数据库备份,那我们只能选择最后的一招了,那就是DBCC CHECKDB命令,同样和上面一样,此种方式可能会造成数据丢失,所以不建议采用,如果能容忍数据丢失,采用的过程参照文中的上半部分。(不推荐)
至此,我们已经完成了一个SQL Server启动过程或者平常最经常遇到的一个经典错误824错误,我们来总结下:
824错误原因:大部分是由于磁盘存储导致的数据页损坏,导致的SQL Server在读取的时候发生了错误。
导致错误场景:磁盘坏道、突然断电等情况下经常会出现此错误。
----------------------------------------------------------霸气的分割线-----------------------------------------------------------------------
和824错误相关的还有一种是823错误,我们来介绍下该错误信息由于场景所限,我就不重现该错误了,在这里我详细的介绍下这两种错误的原因和原理,就可以了,如果遇到了,解决的方式基本都是一致的,可参照上面的824错误解决方法。
SQL Server在每次写入页面的时候,会根据页面里的数据算出一个校验值,一同存储到页面中去。当下次读取页面的时候,再根据这次读到的页面数据,算出一个新的校验值。如果写入和读出的数据一模一样,那么两个校验值就是相等的。如果两个校验值不相等,就意味着上次SQL Server写入的数据和这次读取出来的一定不同,现在读取出来的数据就有问题了。
823错误就代表着SQL Server在向操作系统申请某个页面读写的时候遇到了Windows读取或写入请求失败。所以该问题的原因大部分是源自于操作系统层面,更确切的说是物理文件损坏而导致此错误,比如设备驱动程序导致等。
824错误则是在读取数据页面时候,发现数据页面有问题,比如读取出来的校验值不对等。&
当上面描述的823和824错误出现大面积的时候,或者直接部分数据文件完全坏掉的情况下,在SQL Server启动过程中就会出现数据库SUSPECT&质疑&状态。
经过我的多次数据页的破坏和摧残,我已经顺利的将我们的这个测试库给搞成了质疑状态,我们来看SUSPECT(质疑)的状态库:
这里我直接DBCC CHECKDB命令尝试着恢复下看看
所以到此,我们要做的就是避免上述错误的发生。如果在生产库中发生了我上面的情况,然后没有数据库备份,那么剩下来你要做的事情:我估计就是准备简历了.....&
本篇文章到此结束了......文章主要还是分析SQL Server启动过程中,加载用户数据库的时候,所遇到的一系列问题,文中部分内容需要有一定数据库基础知识才能读懂,篇幅有限,我们没有做深入的讲解分析,比如上面的几个重要的命令DBCC PAGE....DBCC CHECKDB..等等,随便一个都能写出一系列的内容,我们侧重的还是问题的解决,和问题原因分析,后续文章中会介绍这一系列的命令作用,以及正确的使用技巧。
....此篇耗时四天完成....文中部分数据库错误都是我耗费精力一步一步调整出来,目的是真实的展现错误明细,其实问题解决容易,问题重现的过程复杂。
如果经常使用SQL Server,其实这些问题都是我们会经常遇到的,所以我们要记住相应的解决方案,做的有备无患!
当然个人能力有限,部分不当之处,还望指出不吝赐教。
文章最后给出本篇的关联篇:
如果您看了本篇博客,觉得对您有所收获,请不要吝啬您的&推荐&。&&
阅读(...) 评论()}

我要回帖

更多关于 u盘自动拷贝 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信