我需要从网络上的另一台计算机连接到笔记本电脑上运行的SQL Server数据库。我是从C#应用程序以及VBA宏中执行此操作。两者都在我的笔记本电脑上完美运行,而C#应用程序在网络上运行完美。但是我无法通过网络使用VBA进行连接。这是我的连接字符串:
ConnectionString = "Driver={SQL Server};Server=MY-LAPTOP; DAtabase=SAFEXlive; UID = MyUsername; PWD=MyPassword"
除了'Driver = {SQL Server}'之外,这与我在C#app中使用的连接字符串相同。
然后我使用以下代码(在VBE中引用Microsoft ActiveX Data Objects 6.0库)打开连接:
Dim oConnection As Connection
Set oConnection = New Connection
oConnection.ConnectionString = strConnectionString
oConnection.Open
如果我在笔记本电脑上运行它,但是如果我在网络上的另一台计算机上运行它,则会出现错误:“运行时错误”-2147217843(80040e4d)[Microsoft] [ODBC服务器驱动程序] [SQL服务器]用户登录失败...“并且用户指定Windows登录计算机。
我需要在代码或Excel中设置一些安全设置吗?或者我是否错误地构造连接字符串?我做错了什么?
答案 0 :(得分:4)
解决。答案是相当令人愤怒的。问题实际上是连接字符串和UID。信不信由你将...UID= MyUsername;...
更改为..UID=MyUsername;...
,即删除空格字符,就这么做了!谢谢你的建议。
答案 1 :(得分:3)
尝试此连接字符串,
ConnectionString = "Provider=SQLOLEDB;Data Source=MY-LAPTOP;Initial Catalog=SAFEXlive;User ID=MyUsername;Password=MyPassword"
这是AD域名登录吗?确保您已将域名附加到用户名,例如domain\user
。
我建议使用集成安全性而不是这个。