2016-03-04 30 views
1

我試圖在Excel中創建一個函數,通過單擊按鈕將數據寫入到我的遠程SQL Server數據庫。但是,我不斷收到錯誤,告知我用戶「UserName」(Error 80040e4d)的登錄失敗。從Excel導出到SQL:用戶登錄失敗

起初我以爲數據庫中的用戶/登錄一定會有問題,所以我去了遠程桌面,打開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

回答

1

Integrated Security=SSPI

這個參數在連接字符串中意味着你要通過你的windows主體名稱身份驗證,所以SQL登錄名和密碼都被忽略。

如果您要使用指定的用戶名和密碼,則應從連接字符串中刪除此名稱/值對。

+0

它的工作(好東西進口,不完全是我想要的,但我可以修復)!你是我最喜歡的人!謝謝! – MBot93

+0

太棒了!隨時通過勾選我的答案來接受;-) – SpaceBison