繁体   English   中英

如何将Excel安全连接到sql server 2008?

[英]How do I connect Excel securely to sql server 2008?

我的公司希望大约有100名销售人员(分布在全国各地)能够运行excel中的存储过程,并将数据返回到电子表格中。

我们有sql server2008。我需要找出一种安全的方法来做到这一点。

我将在excel中创建一个表单,用户可以在该表单中按下命令按钮以根据他们选择的参数刷新数据。

  1. 如何确保从excel到sql server的连接安全?
  2. 我如何从Excel运行存储过程?

我发现这是非常好的信息: http : //office.microsoft.com/zh-cn/excel-help/connect-to-import-sql-server-data-HA010217956.aspx

Windows身份验证选择此选项可以使用当前用户的Windows用户名和密码。 这是最安全的方法,但是当许多用户连接到服务器时,它可能会影响性能。

但是,我希望您对此提供意见。

是的,销售代表确实具有Windows登录名,但是如果他们实际要输入来指定数据标准,然后将这些标准发送到存储过程中,然后从服务器获取数据,我可以使用此解决方案吗?

允许用户直接连接到您的数据库很棘手。 首先,由于用户帐户比妥善隔离的管理员和服务帐户更容易受到攻击,因此您容易受到来自外部的攻击。 话虽这么说,确实需要妥协用户帐户以允许攻击者进入系统,并且如果每个用户都有自己的凭据,则SQL Server内置了良好的控制粒度。

使用Excel本机界面与通过VBA或VSTA进行操作没有什么不同,这是过去十年左右大多数开发人员的方式。 这些方法与您的网络一样安全。 我相信Excel原生功能也可以在没有多余引用的情况下使用,这对于维护目的特别有用。 主要区别似乎在于执行任意查询的能力。 为了安全和数据完整性,这可能是最好的。

运行存储过程可能不是一个好主意,因为如果您的用户开始频繁地需要(调整)调整,则可能会遇到大量的支持需求。 你可以用一个视图来做吗? Excel的内置过滤和排序功能非常强大。 那将是我的第一个方法。

有几种方法取决于您的需求:

1-修改架构以允许数据库将数据绑定到各个用户

2-将访问代码移动到与工作簿关联的VBA宏中。 不建议这样做,但是它将允许您直接使用ADO。 如果要这样做,请确保在数据库端具有可靠的安全配置,因为获得用户帐户访问权限的攻击者将能够执行用户可以执行的任何操作。

要使用VBA路由,请在VBA环境中的“工具”->“参考”中找到最新的Microsoft ADO版本。 VBA代码如下所示:

Dim Connection as ADODB.Connection
Set Connection = new ADODB.Connection
Connection.Open"Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Trusted_Connection=yes;"
Dim command As ADODB.command
command.CommandText = "exec sp_something"
Dim Parameters(2) As ADODB.Parameter

Set Parameters(1) = New ADODB.Parameter
Parameters(1).Name = "field_name"
Parameters(1).Type = adVarChar
Parameters(1).Size = 50

Set Parameters(2) = New ADODB.Parameter
Parameters(2).Name = "field_name_2"
Parameters(2).Type = adVarChar
Parameters(2).Size = 50

Dim i As Integer
For i = LBound(Parameters) To UBound(Parameters)
    command.Parameters.Append Parameters(i)
Next i

Dim Records As ADODB.Recordset
Set Records = command.Execute

将宏绑定到您的按钮,通过工作表或输入框设置值,然后触发。 但是,我会再次警告我:这样做会导致大量的支持需求。 如果人们想提取自定义数据,那么他们会对此非常重视。

与您链接的文章不同,我宁愿使用VBA脚本来引用ADO库,并使用与技术SQL用户的常规连接字符串。

由于在这种情况下密码将在连接字符串中,因此该技术用户除执行存储过程外没有其他权限。

让我知道您是否需要更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM