我已经创建了一个本地数据库我可以在 MS sqlserver management studio 2014、linqpad 和 visual studio 2013 中使用它。
这是 SSMS 中“连接属性”对话框的一部分,显示服务器名称:
我希望能够从 Excel 中连接到此数据库。问题是 Excel 中的“数据连接向导”无法连接。
在这里,我输入了与 SSMS 中的“连接属性”给出的相同的服务器名称......
这是我收到的错误...
问题:
Excel 能否连接到 localDB?我知道能连接到 sql-server 数据库。LocalDB 是否存在一些限制,导致无法实现这一点?我认为 LocalDB 的重点是允许开发而无需费力设置独立数据库。
还有其他连接方式吗?还是我的服务器名称需要进行一些烦人的修改?
答案1
真是无端的麻烦!
我可以按照以下步骤使用“数据连接向导”使其工作......
- 从数据连接向导中选择“其他/高级”,然后点击“下一步”。我以为 sqlserver express 创建的 localDB 会显示为“SQL Server”。显然不是!虽然我不明白为什么。
- 选择“SQL Server Native Client 11.0”作为提供程序。好的,我刚才不是在上一个选项卡中选择了“SQL Server”。我碰巧运行的是 SQL Server Express 12 版,列表中没有“12”——也许它严格指的是客户端版本,暗示客户端 11 可以连接到服务器 12?又一个认知上的误区。
- 输入与 SSMS 或 linqpad 中相同的服务器名称。选择 Windows 集成安全性。测试连接现在可以工作,并且可以选择数据库并将表转储到 Excel 中。
做到这一点并不难,但似乎没有任何逻辑流程,你必须不断摸索直到找到答案。
答案2
这是连接字符串(SQLServer 2012 / Excel 2013):
Server=(LocalDB)\MSSQLLocalDB; Integrated Security=true ;AttachDbFileName={mdf file full path}
哦,在我的 PC 上,我不得不使用;Trusted_Connection=Yes
,这可能没有任何意义,因为我的笔记本电脑和 PC 都运行着完全相同版本的 SQLServer 和 Excel。
编辑
我无法重现该错误(我甚至在虚拟机上安装了 SQL Server 2014,它仍然有效)。您可以添加并可能对您有帮助的唯一选项是Provider=SQLNCLI11;
ORProvider=SQLNCLI12;
您可以通过在命令行中运行来找出安装的版本sqllocaldb v
。
这将产生类似以下内容:Microsoft SQL Server 2014 (12.0.2000.8)