sql - 在 Excel 2016 (O365) 中嵌入 SQL Server 凭据以按需刷新数据

标签 sql sql-server-2008-r2 excel-2016

我正在尝试将 SQL Server 2008R2 数据库上的帐户的凭据嵌入到 Excel 2016 工作簿中,该帐户对某些存储过程具有执行权限,以便为最终用户提供只读数据。用户帐户无权访问数据库本身,其想法是将这个只读帐户的凭据嵌入到 Excel 电子表格中,用户只需单击“全部刷新”即可获取从存储过程返回的最新数据.

澄清一下,我不在乎用户是否知道帐户的密码 - 这不是问题。我只是不希望他们必须输入密码才能刷新数据。

这是我迄今为止在 Excel 中尝试过的操作:

  • 数据(选项卡)> 获取数据 > 从数据库 > 从 SQL Server 数据库 > 我输入服务器、数据库和“exec sp”命令,这对我来说返回数据没有问题。但是,如果我将文件移交给无权访问数据库的另一个用户,则连接会失败,因为 Excel 正在尝试使用 Windows 凭据。因此,我尝试编辑连接字符串(数据(选项卡)> 查询和连接 > 右键单击​​查询 > 属性 > 定义(选项卡)> 连接字符串),但字段呈灰色,因此我无法添加用户 ID 和密码部分连接字符串。
  • 数据(选项卡)> 获取数据 > 从其他源 > 从 OLEDB > 构建 > 提供程序(选项卡)我选择“SQL Server Native Client 10.0”> 连接(选项卡)我输入服务器名称,“使用特定用户名并选中“密码”单选按钮,输入帐户用户名/密码,选择数据库,“测试连接”返回有效>全部(选项卡)>将“集成安全性”设置为“False”>确定>确定> Excel然后提示输入数据库中的凭据/Windows/默认或自定义:

enter image description here 我不认为我会在这里输入任何内容,因为我在构建查询字符串时已经输入了凭据,但我还是输入了,因为似乎需要输入一些内容。我将 Excel 文件交给另一个用户,果然访问被拒绝,因为默认使用他们当前的 Windows 登录来访问数据库。

  • 我将“来自数据连接向导(旧版)”添加到我的功能区,作为使用与之前尝试相同的设置构建连接字符串的替代方法,并且每次我想要刷新时都会提示我输入密码:

enter image description here

什么给了?我有一位同事有一个 Excel 2010 文件,他们可以进入该文件并编辑连接字符串属性,不会出现问题,并且他们的文件可以正常工作。我怎样才能让它在 Excel 2016 中工作?

我非常感谢你们提供的任何帮助!

编辑:这个问题似乎并不遥远......有人知道该怎么做吗?我觉得应该很简单。

最佳答案

迟到总比不到好?您需要使用旧版“Microsoft Query”(而不是 Power Query)来创建数据连接。 MS 已明确删除了使用 Power Query 数据源在连接字符串(在 ODC 文件中 - 忽略)中存储用户名和密码的功能。

创建:
获取数据 > 从其他来源 > 从 Microsoft Query

您可以访问(和编辑)连接字符串(连接属性 -> 定义) - 并以这种方式永久(非安全)存储密码。

也通过 VBA(对于现有连接)

With ActiveWorkbook.Connections("yourconnection").ODBCConnection

    .Connection = _
    "ODBC;DRIVER=SQL Server;SERVER=sql2012.servername.com,99999;UID=username;PWD=password"
    .SavePassword = True

End With

想要 O365 的方法。

关于sql - 在 Excel 2016 (O365) 中嵌入 SQL Server 凭据以按需刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49802471/

相关文章:

mysql - 编写 SQL 查询日期范围以从已知结束日期检索开始日期

sql - 计算分级定价的总和。 SQL 服务器。等级定价表

excel - Excel 2016 for Mac 中的自动调整注释框大小

VBA excel英语2007导致excel 2016法语错误消息

SQL Server 表数据到带有列值的 xml 文件

mysql - 添加订单数量以给出每个产品的订购数量

sql-server - SQL Server dbo.sysdiagrams 是用户表或系统表

c# - 在C#中使用DbParameter将数据插入SQL Server

sql-server - 从表数据创建 XML 元素和值

excel - 从网站复制 Excel VBA 代码时出现意外的语法错误