1. 要求pc机上安装VFP6.0和sqlserver2000软件。
2. 配置windows的ODBC数据源:
开始菜单—》程式集—》系统管理工具—》资料数据源(ODBC)—》进入配置用户DSN或者系统DSN均可以:添加—》选择MICROSOFT FOXPRO VFPdriver(*.DBF)—》在ODBC VISUAL FOXPRO SETUP画面中, 自定义数据源名称(随意如:VFPTEST)—》DATABASE TYPE可以选择VISUAL FOXPRO DATABSE(*.DBC)或者FREE TABLE DIRECTORY(*.DBF如选择这种可以自由的选择目录)—》OK完成。
配置和测试ODBC完成!
3. 配置sqlserver2000中的连接服务器:
企业管理器—》安全性—》连接服务器—》右键新建连接服务器—》定义连接名称; 选其他数据源; 指定程序名称为:MICROSOFT OLE DB PROVideR FOR ODBC DRIVER产品名称可不填; 数据源指定刚才ODBC中定义好的数据源名称; 提供程序字符串按以下格式填写:User ID=usernamePassword=userpasswd(或者按如下格式:UID=usernamePWD=userpasswd),这里的用户名和密码对应所要连接的VFP数据库中的用户名和密码 —》 安全性标签页里:设置用此安全上下文进行,并录入VFP的数据库用户名和密码—》服务器选项标签页可默认—》确定。
4.准备工作全部完成!在sqlserver企业管理器—》安全性—》连接服务器打开刚建好的连接服务器—》点击表,即可在右边窗口看到该VFP数据库用户拥有的的所有表名,但在这里还并不能查看表的记录,这个需要在sqserver的查询分析器中用具体sql实现!访问表时,使用格式为: [连接服务器名]..[VFP用户].[表名]。更详细具体的使用这里不再赘述。
sql多用户访问数据库其实就是事务并发,会引起如下问题:\x0d\x0a1、脏读:一个事务读取到了另外一个事务没有提交的数据\x0d\x0a事务1:更新一条数据\x0d\x0a事务2:读取事务1更新的记录\x0d\x0a事务1:调用commit进行提交\x0d\x0a此时事务2读取到的数据是保存在数据库内存中的数据,称为脏读。\x0d\x0a读到的数据为脏数据\x0d\x0a详细解释:\x0d\x0a脏读就是指:当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,\x0d\x0a另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个\x0d\x0a事务读到的这个数据是脏数据,依据脏数据所做的 *** 作可能是不正确的。\x0d\x0a2、不可重复读:在同一事务中,两次读取同一数据,得到内容不同\x0d\x0a事务1:查询一条记录\x0d\x0a事务2:更新事务1查询的记录\x0d\x0a事务2:调用commit进行提交\x0d\x0a事务1:再次查询上次的记录\x0d\x0a此时事务1对同一数据查询了两次,可得到的内容不同,称为不可重复读。\x0d\x0a3、幻读:同一事务中,用同样的 *** 作读取两次,得到的记录数不相同\x0d\x0a事务1:查询表中所有记录\x0d\x0a事务2:插入一条记录\x0d\x0a事务2:调用commit进行提交\x0d\x0a事务1:再次查询表中所有记录\x0d\x0a此时事务1两次查询到的记录是不一样的,称为幻读\x0d\x0a详细解释:\x0d\x0a幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,\x0d\x0a这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表\x0d\x0a中插入一行新数据。那么,以后就会发生 *** 作第一个事务的用户发现表中还有没有修改的数据行,\x0d\x0a就好象发生了幻觉一样。\x0d\x0a处理以上隔离级别的问题,采用如下方是:\x0d\x0a事务隔离五种级别:\x0d\x0aTRANSACTION_NONE不使用事务。\x0d\x0aTRANSACTION_READ_UNCOMMITTED允许脏读。\x0d\x0aTRANSACTION_READ_COMMITTED防止脏读,最常用的隔离级别,并且是大多数数据库的默认隔离级别\x0d\x0aTRANSACTION_REPEATABLE_READ可以防止脏读和不可重复读,\x0d\x0aTRANSACTION_SERIALIZABLE可以防止脏读,不可重复读取和幻读,(事务串行化)会降低数据库的效率\x0d\x0a以上的五个事务隔离级别都是在Connection接口中定义的静态常量,\x0d\x0a使用setTransactionIsolation(intlevel)方法可以设置事务隔离级别。\x0d\x0a如:con.setTransactionIsolation(Connection.REPEATABLE_READ)\x0d\x0a注意:事务的隔离级别受到数据库的限制,不同的数据库支持的的隔离级别不一定相同\x0d\x0a1脏读:修改时加排他锁,直到事务提交后才释放,读取时加共享锁,读取完释放事务1读取数据时加上共享锁后(这样在事务1读取数据的过程中,其他事务就不会修改该数据),不允许任何事物 *** 作该数据,只能读取,之后1如果有更新 *** 作,那么会转换为排他锁,其他事务更无权参与进来读写,这样就防止了脏读问题。\x0d\x0a但是当事务1读取数据过程中,有可能其他事务也读取了该数据,读取完毕后共享锁释放,此时事务1修改数据,修改完毕提交事务,其他事务再次读取数据时候发现数据不一致,就会出现不可重复读问题,所以这样不能够避免不可重复读问题。\x0d\x0a2不可重复读:读取数据时加共享锁,写数据时加排他锁,都是事务提交才释放锁。读取时候不允许其他事物修改该数据,不管数据在事务过程中读取多少次,数据都是一致的,避免了不可重复读问题\x0d\x0a3幻读问题:采用的是范围锁RangeSRangeS_S模式,锁定检索范围为只读,这样就避免了幻影读问题。1、异地访问,即远程访问无法使用服务器名称访问,需要使用服务器IP地址+,+端口号如:10.10.10.1,5122 ,中间为半角逗号,如果用默认1433端口,“,端口号”可以省略。
2、登录用户,只能使用SQL身份验证。
3、如果是局域网内服务器,还需要路由设备,设置端口转向或者是虚拟服务器:
类似图中的设置,只要设置外部端口,内部端口,内部ip地址。
4、如果是动态IP的宽带,还需要类似花生壳的ip地址转向,主要作用是在公网IP改变时,不需要通知需要连接服务器的用户。
5、服务器上远程登录要打开,如图:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)