我正在尝试在Excel中创建一个函数,只需单击一个按钮就可以将数据写入我的远程SQL Server数据库。但是,我一直收到错误,告诉我用户“UserName”的登录失败(错误80040e4d)。
起初我以为数据库中的用户/登录一定有问题,所以我去了远程桌面,打开了SQL Server Management Studio并检查了我的所有权限,确保选中了Windows身份验证,检查了密码等...仍然无法正常工作。
我的用户已获得读写权限,因此我尝试将数据从SQL导入Excel,这确实有效。所以我假设这必须是我的VBA代码中的一个问题,更具体地说,我的连接字符串。
如果有人可以看一眼,我会很感激,并告诉我我做错了什么?或者,如果其他人有这个问题,并知道是什么导致它?
这是我的代码:
Sub Button3_Click()
Dim conn As New ADODB.Connection
Dim iRowNo As Integer
Dim sArtistId, sForename, sSurname, sNationality, sBirthDate, sDeathDate As String
With Sheets("NewArtist")
'Open a connection to SQL Server
conn.Open "Provider=SQLOLEDB;Data Source=tcp:IPADDRESS,1433\SqlServer2008;" & _
"Initial Catalog=DatabaseName;User ID=UserName;Password=PassWord" & _
"Integrated Security=SSPI;"
'Skip the header row
iRowNo = 2
'Loop until empty cell in CustomerId
Do Until .Cells(iRowNo, 1) = ""
sCustomerId = .Cells(iRowNo, 1)
sFirstName = .Cells(iRowNo, 2)
sLastName = .Cells(iRowNo, 3)
'Generate and execute sql statement to import the excel rows to SQL Server table
conn.Execute "insert into dbo.Components (ArtistId, Forename, Surname, Nationality, BirthDate, DeathDate) values ('" & sArtistId & "', '" & sForename & "', '" & sSurname & "', '" & sNationality & "', '" & sBirthDate & "', '" & DeathDate & "')"
iRowNo = iRowNo + 1
Loop
MsgBox "Artists imported."
conn.Close
Set conn = Nothing
End With
End Sub
非常感谢!
TW
答案 0 :(得分:1)
Integrated Security=SSPI
连接字符串中的此参数表示您要将Windows主体名称作为身份验证传递,因此将忽略sql登录名和密码。
如果要使用指定的用户名和密码,则应从连接字符串中删除此名称/值对。