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

gbe*_*ven 5 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”> 连接(选项卡)我输入服务器名称,“使用特定的用户名和密码”单选检查并输入帐户用户名/密码,选择数据库,“测试连接”返回有效>所有(选项卡)>将“集成安全”设置为“假”>确定>确定>Excel然后提示输入来自数据库/Windows/的凭据默认或自定义:

在此处输入图片说明 我不认为我会在这里输入任何内容,因为我在构建查询字符串时已经输入了凭据,但我还是输入了,因为似乎需要输入某些内容。我将 Excel 文件交给另一个用户,并且肯定拒绝了足够的访问,因为它默认使用他们当前的 Windows 登录来访问数据库。

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

在此处输入图片说明

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

我真的很感激你们能提供的任何帮助!

编辑:这个问题似乎并不遥远..有谁知道如何做到这一点?我觉得应该很简单。

小智 5

迟到总比不到好?您需要使用旧版“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
Run Code Online (Sandbox Code Playgroud)

会喜欢 O365 的方法。