• 访问有用户名和密码的网络共享,实现数据导入


    一个应用需要使用局域网某部主机提供的数据.由于安全考虑.这个主机只开放了一个共享地址,并给了有权访问的用户名和密码.数据为ACCESS文件.

    而我们的应用需要每天定时去访问这个文件.来同步数据.

    环境:

    1.共享文件形式,提供访问的用户名和密码;

    2.文件格式为Access文件;

    3.数据需要定时访问,与更新;

    4.数据最终存储目标地址为SQLServer数据库

    最初:

    我们想通过SqlServer DTS包定时执行来导入数据.但不管怎么调试.SQLServer在执行的时报错.报错提示为权限不足.经过分析,SqlServer DTS

    导入对于网络共享目录的支持不太好,再深入发现也跟共享目录给的权限有一定关系.这个问题困绕了我们很长时间。在网络上找了很多资料都没解决。

    改变方案:

    写一个单独导入的程序,在导入之前通过批处理脚本去将文件复制到本地,然后再去导入,然后定出以下几个步骤

    1.启用批处理脚本程度

    2.复制文件到本地目录

    3.调用专门导数据的Exe可执行程序

    4.导入成功

    经过几步就可实现一次数据导入。可以走通。

    接着将这个两个文件部署到服务器中.用windows计划任务来定时执行这个批处理.

    部署后倍感开心。总算能实现完整导入。

    第二天来公司。打开服务器一看windows计划任务成功执行。然后查询数据库数据。竟然没有导入。空空如也。

    是什么问题?然后再手工执行了计划任务,发现一闪而过。也没有错误提示.数据库没有数据.说明导入数据程序没有执行到。

    再打开计划任务高级设置。发现一个地方 “起始于” 参数设置然后输入bat的目录地址,再次运行计划任务。成功!

    (这里注意:在bat调用其它Exe的时候一定要指定批处理文件的起启位置。否则调不到Exe)

    到这里这个导入程序可以实现自动更新了。然而好景不长。由于网络主从切换,程序运行服务器要重新启动。发现重新启动后网络共享地址就没权访问。

    需要再次输入用户名和密码,如果网络环境略发生变化就会失败.就不太稳定了.

    升级方案

    1.启用批处理脚本程度

    2.创建一个网络驱动器

    3.复制网络驱动器文件到本地目录

    4.调用专门导数据的Exe可执行程序

    5.删除网络驱动器

    6.导入成功

    升级方案后加入网络驱动器会指定访问的密码和用户名.不管机器是否为第一次访问都可以连接.(你懂的)

    在创建网络驱动器时注意:

    /user:机器名/用户名

    机器名为远程共享文件的机器名.用户名为远程共享文件的机器用户名

    例如:net use M: \\192.168.1.2\TEST "123456" /user:fileserver\administrator

    \\192.168.1.2\TEST为共享目录的地址

    123456为密码

    fileserver 为共享服务器名称

    administrator 为共享服务器登陆用户名

    脚本如下:

    @ECHO OFF
    @REM 以下三个变量配置,注意CHT_PATH等号后不能有空格

    net use M: \\192.168.1.150\TEST1 "123456" /user:fileserver\administrator
    net use N: \\192.168.1.150\TEST2 "123456" /user:fileserver\administrator

    @SET CHT_PATH="M:\FUELSCAN.MDB"
    @SET HIT_PATH="N:\FUELSCAN.MDB"
    @SET SQL_CONN="Server=192.168.1.2;initial catalog=TEST_DB;uid=sa;pwd=sa123;"

    @TITLE 作业导数
    @ECHO 导入目标机器 %SQL_CONN%
    @ECHO CHT文件来源 %CHT_PATH%
    @ECHO HIT文件来源 %HIT_PATH%
    @ECHO 当前时间:
    @DATE /T
    @TIME /T

    @ECHO 开始复制文件...%CHT_PATH%
    @COPY %CHT_PATH% "CHT_HIT\CHT_TEMP.mdb"
    @ECHO 开始复制文件...%HIT_PATH%
    @COPY %HIT_PATH% "CHT_HIT\HIT_TEMP.mdb"

    @ECHO 开始导入数据...
    @ECHO 正在导入中...
    @CALL SnphkHIT_CHT_Task.exe %SQL_CONN%

    net use M: /del
    net use N: /del

    @ECHO 导入完成

    技术是一种态度
  • 相关阅读:
    LeetCode: Binary Tree Zigzag Level Order Traversal
    LeetCode: Binary Tree Level Order Traversal II
    LeetCode: Climbing Stairs
    LeetCode: Binary Tree Inorder Traversal
    windows下利用xdebug和WinCacheGrind优化PHP代码(转)
    15个你未知的 Chrome 浏览器杀手级应用(转)
    【转】PHP技巧汇总:提高PHP性能的53个技巧
    21个实用PHP代码
    PHP魔术函数集锦
    介绍9个很有发展潜力的PHP开源项目
  • 原文地址:https://www.cnblogs.com/hznet/p/2086117.html
Copyright © 2020-2023  润新知