在 Excel 2016 (O365) 中嵌入 SQL 服务器凭据以按需刷新数据
Embed SQL Server Credentials in Excel 2016 (O365) to Refresh Data On-Demand
我正在尝试将凭据嵌入 Excel 2016 工作簿,用于我的 SQL Server 2008R2 数据库上的一个帐户,该数据库对某些存储过程具有执行权限,以向最终用户提供只读数据。用户帐户无权访问数据库本身,想法是将此只读帐户的凭据嵌入到 excel 电子表格中,用户只需单击“全部刷新”即可返回最新数据来自存储过程。
澄清一下,我不关心用户是否知道帐户密码 - 这不是问题。我只是不希望他们必须输入密码才能刷新数据。
这是我目前在 Excel 中尝试过的内容:
- 数据(选项卡)> 获取数据 > 从数据库 > 从 SQL 服务器数据库 > 我输入服务器、数据库和我的 'exec sp' 命令和这个 returns 数据没问题我。但是,如果我将文件交给另一个无权访问数据库的用户,连接将失败,因为 Excel 正在尝试使用 Windows 凭据。所以我尝试编辑连接字符串(数据(选项卡)> 查询和连接> 右键单击查询> 属性> 定义(选项卡)> 连接字符串)但字段显示为灰色,因此我无法添加用户 ID 和密码部分连接字符串。
- 数据(选项卡)> 获取数据> 从其他来源> 从 OLEDB > 构建 > 提供程序(选项卡)我选择 'SQL Server Native Client 10.0' > 连接(选项卡)我输入服务器名称,'Use a specific user name and password' 单选然后我输入帐户 username/password、select 数据库,'Test Connection' returns 有效 > 全部(选项卡)> 将 'Integrated Security' 设置为“False” > 确定 > 确定> Excel 然后提示输入来自 Database/Windows/Default 或 Custom:
的凭据
我不认为我会在这里输入任何内容,因为我在构建查询字符串时已经输入了凭据,但我还是输入了,因为它似乎需要输入一些东西。我将 Excel 文件移交给另一个用户,并且确定足够的访问被拒绝,因为它默认使用他们当前的 Windows 登录名来访问数据库。
- 我将“从数据连接向导(旧版)”添加到我的功能区,作为使用与上次尝试相同的设置构建连接字符串的替代方法,每次我想输入密码时都会提示我输入密码刷新:
什么给?我有一个同事有一个 Excel 2010 文件,他们可以在其中毫无问题地进入并编辑连接字符串属性,并且他们的文件可以正常工作。我怎样才能让它在 Excel 2016 年工作?
非常感谢你们提供的任何帮助!
编辑:这个问题似乎并不遥远..有谁知道如何做到这一点?感觉应该挺简单的。
迟到总比不到好?您需要使用旧版 "Microsoft Query"(而不是 Power Query)来创建数据连接。 MS 已明确删除使用 Power Query 数据源在连接字符串(在 ODC 文件中 - 忽略)中存储用户名和密码的功能。
要创建:
获取数据 > 从其他来源 > 从 Microsoft Query
您可以访问(和编辑)连接字符串(连接属性 -> 定义)- 并以这种方式永久存储密码 (non-securely)。
也通过 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 的方法。
我正在尝试将凭据嵌入 Excel 2016 工作簿,用于我的 SQL Server 2008R2 数据库上的一个帐户,该数据库对某些存储过程具有执行权限,以向最终用户提供只读数据。用户帐户无权访问数据库本身,想法是将此只读帐户的凭据嵌入到 excel 电子表格中,用户只需单击“全部刷新”即可返回最新数据来自存储过程。
澄清一下,我不关心用户是否知道帐户密码 - 这不是问题。我只是不希望他们必须输入密码才能刷新数据。
这是我目前在 Excel 中尝试过的内容:
- 数据(选项卡)> 获取数据 > 从数据库 > 从 SQL 服务器数据库 > 我输入服务器、数据库和我的 'exec sp' 命令和这个 returns 数据没问题我。但是,如果我将文件交给另一个无权访问数据库的用户,连接将失败,因为 Excel 正在尝试使用 Windows 凭据。所以我尝试编辑连接字符串(数据(选项卡)> 查询和连接> 右键单击查询> 属性> 定义(选项卡)> 连接字符串)但字段显示为灰色,因此我无法添加用户 ID 和密码部分连接字符串。
- 数据(选项卡)> 获取数据> 从其他来源> 从 OLEDB > 构建 > 提供程序(选项卡)我选择 'SQL Server Native Client 10.0' > 连接(选项卡)我输入服务器名称,'Use a specific user name and password' 单选然后我输入帐户 username/password、select 数据库,'Test Connection' returns 有效 > 全部(选项卡)> 将 'Integrated Security' 设置为“False” > 确定 > 确定> Excel 然后提示输入来自 Database/Windows/Default 或 Custom: 的凭据
- 我将“从数据连接向导(旧版)”添加到我的功能区,作为使用与上次尝试相同的设置构建连接字符串的替代方法,每次我想输入密码时都会提示我输入密码刷新:
什么给?我有一个同事有一个 Excel 2010 文件,他们可以在其中毫无问题地进入并编辑连接字符串属性,并且他们的文件可以正常工作。我怎样才能让它在 Excel 2016 年工作?
非常感谢你们提供的任何帮助!
编辑:这个问题似乎并不遥远..有谁知道如何做到这一点?感觉应该挺简单的。
迟到总比不到好?您需要使用旧版 "Microsoft Query"(而不是 Power Query)来创建数据连接。 MS 已明确删除使用 Power Query 数据源在连接字符串(在 ODC 文件中 - 忽略)中存储用户名和密码的功能。
要创建:
获取数据 > 从其他来源 > 从 Microsoft Query
您可以访问(和编辑)连接字符串(连接属性 -> 定义)- 并以这种方式永久存储密码 (non-securely)。
也通过 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 的方法。