如何确保VBA对SQL进行操作时候的数据安全性?
时间:2011-02-27
来源:互联网
我们公司使用一个叫SYTELINE7的ERP系统,其数据库为SQL。本人只会一些简单的VBA代码,最近在其他人的帮助下,写了一些简单的代码,实现利用EXCEL的VBA登录服务器,从SQL中拿出数据放到EXCEL中,然后进行整理得到我们所需要的报表。这是一个非常常用而且有用的功能,只是老板出于数据安全的考虑,提出了如何确保SQL数据安全不被修改的问题,毕竟事关重大,如果出了问题后果可能比较严重。但是因为公司内部对这方面了解的人不多,自己又是半桶水,因而也一直无法回答这个问题,特此请教各位高手:
我写的代码绝大部分都是在一两分钟以内能够拿完数据并且整理完毕,不会占用很长的时间,其中拿数据的代码基本都是如下:
Sub CaptureRawData()
Dim CA As String
Dim i As Integer
Set cn = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
cn.Open "Provider=sqloledb.1;Persist Security Info=True;User ID=sa;Password=;Initial Catalog=abc_app;Data Source=192.168.6.2"
cn.CommandTimeout = 720
Worksheets("ItemLoc").Activate
Cells.Clear
CA = "select item,qty_on_hand,loc,mrb_flag from itemloc where qty_on_hand<>0"
rs.Open CA, cn, 3, 1
For i = 0 To rs.Fields.Count - 1
Cells(1, i + 1) = rs.Fields(i).Name
Next
[A2].CopyFromRecordset rs
rs.Close
End Sub
其他的代码基本上跟SQL无关,都是EXCEL内部的操作,那么,有以下几个问题:
1. 怎样有效确保我的代码不会修改到SQL里面的数据?
2. 因为ERP系统一直都有人在用,如何确保我的代码运行的时候对系统的运行速度影响降低到最小,类似这样的代码对系统的运行速度影响有多大?有没有可能造成系统瘫痪数据丢失之类的?
3. 某些时候,系统可能因为某些原因而处于死机(或者瘫痪?英文表达叫system hang)的状况,这种情况下VBA还有没有可能连接成功并且拿到数据?按照一些人的说法,可能系统瘫痪了,但是数据库还是处于可以连接的状况,这个时候还是可以拿到数据的。
4. 类似的VBA代码对系统以及数据库是否还有一些其他潜在影响?
因本人对这些都了解不多,望高手解惑,越详细越好,不胜感激。
我写的代码绝大部分都是在一两分钟以内能够拿完数据并且整理完毕,不会占用很长的时间,其中拿数据的代码基本都是如下:
Sub CaptureRawData()
Dim CA As String
Dim i As Integer
Set cn = CreateObject("adodb.connection")
Set rs = CreateObject("adodb.recordset")
cn.Open "Provider=sqloledb.1;Persist Security Info=True;User ID=sa;Password=;Initial Catalog=abc_app;Data Source=192.168.6.2"
cn.CommandTimeout = 720
Worksheets("ItemLoc").Activate
Cells.Clear
CA = "select item,qty_on_hand,loc,mrb_flag from itemloc where qty_on_hand<>0"
rs.Open CA, cn, 3, 1
For i = 0 To rs.Fields.Count - 1
Cells(1, i + 1) = rs.Fields(i).Name
Next
[A2].CopyFromRecordset rs
rs.Close
End Sub
其他的代码基本上跟SQL无关,都是EXCEL内部的操作,那么,有以下几个问题:
1. 怎样有效确保我的代码不会修改到SQL里面的数据?
2. 因为ERP系统一直都有人在用,如何确保我的代码运行的时候对系统的运行速度影响降低到最小,类似这样的代码对系统的运行速度影响有多大?有没有可能造成系统瘫痪数据丢失之类的?
3. 某些时候,系统可能因为某些原因而处于死机(或者瘫痪?英文表达叫system hang)的状况,这种情况下VBA还有没有可能连接成功并且拿到数据?按照一些人的说法,可能系统瘫痪了,但是数据库还是处于可以连接的状况,这个时候还是可以拿到数据的。
4. 类似的VBA代码对系统以及数据库是否还有一些其他潜在影响?
因本人对这些都了解不多,望高手解惑,越详细越好,不胜感激。
作者: 助子 发布时间: 2011-02-27
在SQL新建一个用户,只有读取权限,就可以了,千万不要用SA账户,ERP死机只要SQL没事,还是可以读取数据的。对系统的运行速度影响取决于你的联网速度及SQL语句。可以考虑用服务器端存储过程,提高速度。
作者: zhao__feng 发布时间: 2011-02-27
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28